定义: 定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
产品: public interface Product {
void show ();
}
产品1: class Product1 implements Product {
public void show () {
System.out.println ("创建产品1");
}
}
产品2: class Product2 implements Product {
public void show () {
System.out.println ("创建产品2");
}
}
生产工厂: public interface CreateFactory {
Product create();
}
生产工厂实现: class ProductFactory implements CreateFactory {
public Product create(String prdType) {
switch(prdType) {
case "prd1":
return new Product1 (); break;
case "prd2":
return new Product2 (); break;
default:
return null;
}
}
}
调用实例:
public class Test {
public static void main(String[] args) {
ProductFactory pf = new ProductFactory ();
pf.create("prd1");
}
}
优点:1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。
缺点:增加新的产品需要修改工厂实现类中的switch,违背了开闭原则。类的数量主键增加,提高了系统的复杂度
与工厂方法的比对: 对象生成的规则不同, 工厂方法:工厂-产品为1:1, 简单工厂: 工厂-产品为1:n
网友评论