1. 简单工厂模式(静态工厂模式)
根据客户端传入指定产品的参数,通过工厂类判断该参数,直接返回相应的具体产品向上转型对象;
角色:
抽象产品A:与客户端交互的抽象产品;
具体产品:实现抽象产品的ProductA1 ,ProductA2,
简单工厂:客户端根据工厂方法传入向的参数返回具体产品;
interface ProductA{}
class ProductA1 implements ProductA{}
class ProductA2 implements ProductA{}
class SimpleFactory{
public static ProductA getProduct(String category){
if (category.equals("a1")){
return new ProductA1();
}
if (category.equals("a2")){
return new ProductA2();
}
return null;
}
}
简单工厂方法实现了客户端与具体产品实现的解耦,通过抽象出抽象产品,一定程度上提高了程序的可拓展性。当我们需要添加第三种子产品时,我们只需要在工厂类增加返回相应产品的代码,客户端并不需要修改原来的代码;
虽然如此,我们需要修改工厂类代码,依然是违背了开闭原则(对拓展开放,对修改关闭);
而工厂模式则是完全遵循了开闭原则;