java 23种设计模式之创建型—工厂模式(2)

工厂模式分为:简单工厂方法模式,和工厂方法模式


这里我们主要介绍工厂方法模式


简单工厂方法模式中,我们通常是在工厂中传进一个参数以决定应该使用那一个对象


比如一个人: 

1,(抽象产品角色)说话(接口)

2,(具体产品角色)创建两个类实现这个接口 :a,中国人说汉语,b,英国人说英语

3,(客户端,调用实例)创建产品:创建类,并提供静态方法(注意简单工厂方法又叫静态工厂方法(static factory method)),静态方法返回一个说话的实现类。如  static creat(String speak){}

4,(工厂类角色)在工厂中调取我们需要的产品。


以上就是简单工厂方法模式的大概思路


但是他有一个问题,比如我们增加一个法语。他可以直接增加一个类即可,,但是当我们需要增加一个头发颜色。这时我们句需要更改几乎所有的类。比如接口中要增加颜色,每一个角色中也要增加颜色等等


所以工厂方法模式就出现了。我们以服装为例:服装有品牌,大小等之分。我们先写品牌

创建接口
interface Clothes {
	void brand();
}
创建实现类
class yishionImpl implements Clothes{

	@Override
	public void brand() {
		System.out.println("创建了一件以纯品牌衣服");
		
	}

}
这里是以纯,还有其他品牌我们就不写了
这里创建调用对象接口
interface clothesFactory {
 Clothes creat();
}


创建以纯品牌的工厂
class yishionFactory implements clothesFactory{

	@Override
	public Clothes creat() {
		return new yishionImpl();
	}

}
其他略




//创建以纯品牌衣服
clothes = new yishionFactory().creat();
clothes.brand();


这里我们如果需要增加尺寸,我们支持衣服的尺寸不管什么品牌的衣服,他的尺寸都基本上是一样的


首先,我们从新写一个尺寸接口 ,按照品牌的方法写一整套即可,这样,我们不必去修改未来的代码,只需要扩展一套代码即可增加了这个品牌的尺寸(这里似乎又变成了抽象工厂模式)。看看我们的测试类是怎么写的:


public static void main(String[] args) {
Clothes clothes = null;
clothesSize cs = null;
//创建以纯品牌衣服
clothes = new yishionFactory().creat();
//创建以纯品牌尺寸
cs = new yishionsizeFactory().creat();
clothes.brand();
cs.Size();
}
注意上面的代码,尺寸是另外写的和品牌一模一样的代码结构。当我们不需要的时候,删掉这些代码即可,他不会印象到品牌类型代码的变化





爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img