工厂模式在深入浅出设计模式中是这样描述的:
工厂模式主要为创建对象提供过渡接口,以便将创建对象的具体过程隔离屏蔽起来,达到提高灵活性的目的。利用工厂模式能够更好的进行代码解耦。
工厂模式主要分为三类:简单工厂模式,工厂方法模式,抽象工厂模式。
简单工厂模式:又被称为静态工厂模式,主要分为三部分:工厂类(业务判断),抽象产品(接口),具体产品(实现)。
demo如下:
//工厂类
public class TelephoneFactory {
public static Telephone info(String name){
if("OPPO".equals(name)){
return new OPPO();
}else if("Iphone".equals(name)){
return new Iphone();
}else {
throw new RuntimeException("无法创建");
}
}
}
//抽象产品
public interface Telephone{
public Telephone info();
public void getInfo();
}
//具体产品
public class OPPO implements Telephone {
@Override
public Telephone info() {
return new OPPO();
}
@Override
public void getInfo() {
System.out.println("OPPO");
}
}
//测试
public class Test {
public static void main(String[] args) {
TelephoneFactory.info("OPPO").getInfo();
}
}
缺点:违反了开闭原则,每次添加新的产品都需要去修改工厂类的代码
工厂方法模式:主要分为四部分:工厂抽象类,工厂实现类,抽象产品,具体产品
抽象工厂模式主要分为:抽象工厂类,工厂实现类,抽象产品,具体产品