一,工厂模式概述
-
概念
工厂模式是一种创建者模式,在任何生成复杂对象的地方都可以使用工厂模式。 -
工厂模式的分类
简单工厂模式
工厂模式
抽象工厂模式
二,简单工厂模式
-
概念
简单工厂模式,一个具体工厂负责生产所有具体产品。客户端只需要关注生成的具体产品 -
UML
image.png
Factory:表示具体生产产品的工厂类
Product:抽象产品类
P1/P2:具体的产品类 - 代码实例
public abstract class AbstractProduct {
public abstract void usePhone();
}
public class AndroidPhone extends AbstractProduct {
@Override
public void usePhone() {
Log.e("zjy", "android手机");
}
}
public class IosPhone extends AbstractProduct {
@Override
public void usePhone() {
Log.e("zjy","ios手机");
}
}
public class PhoneFactory {
public AbstractProduct createPhoneProduct(String name) {
AbstractProduct product = null;
if ("android".equals(name)) {
product = new AndroidPhone();
} else if ("ios".equals(name)) {
product = new IosPhone();
}
return product;
}
}
PhoneFactory factory = new PhoneFactory();
AbstractProduct product1 = (AndroidPhone) factory.createPhoneProduct("android");
product1.usePhone();
-
优点
客户端需要的产品,可以直接得到,逻辑判断在工厂里边 -
缺点
扩展性一般,杜宇不在产品族中的产品,无法扩展,获取具体产品的方法存在于工厂中如果需要添加产品,需要修改工厂中的代码
三,工厂模式
-
概念
抽象产品,派生出去多种具体的产品.
抽象工厂,派生出多种产品工厂类.
具体的工厂负责一种具体的产品. -
UML
image.png - 代码
-
优点
扩展性,能够处理不同产品系列的产品,通过具体的工厂去生成不同产品族的产品,扩展性较好。 -
缺点
类的个数较多。另外一个工厂的只能够生产一个具体的产品。
四,抽象工厂模式
-
概念
多个抽象产品类
每个抽象产品类可以派生出多个具体产品类
一个抽象工厂类,可以派生出多个具体工厂类
每个具体工厂类可以创建多个具体产品类的实例
五,总结
1.工厂模式是一个创建型的模式
2.在任何使用A a = new A()的情况下,理论上说都能使用工厂模式。
3.在工厂模式分别的对应使用中,简单工厂模式,注重具体生成的产品,而工厂模式,注重的同一个产品下的不同产品族的产品。如栗子中上海大众的汽车和一汽大众的汽车,抽象工厂模式更多事在与整体产品的架构上,不再是单一一个的抽象产品类。
4.工厂模式:一个抽象产品派生出去多个具体的产品,一个抽象工厂派生出多个具体的工厂,而一个具体的工厂对应生成的是一个具体的产品。
5.抽象工厂模式:多个抽象产品分别派生出多个具体的产品,一个抽象工厂派生成出多个具体的工厂,一个工厂对应生成多个具体的产品,这些多个抽象产品之间存在着联系。
网友评论