工厂模式:创建工厂接口,不同类的的实例化通过实现工厂接口的子工厂类完成。
具体例子
工厂模式其实就是在简单工厂模式上,把判断实例化的逻辑放到用户代码那边,然后工厂接口化。而保留了实例化封装和克服了开发封闭原则不用每次加新的类都要修改工厂类。(易扩展低耦合)
缺点就是每添加一个新功能类都要多写一个工厂。
简单工厂模式的客户端代码
AAA a1 = new SimpleFactory.Create("A");
a.method()1;
...
AAA a2 = new SimpleFactory.Create("A");
a.method()2;
...
AAA a3= new SimpleFactory.Create("A");
a.method()3;
工厂模式下的客户端代码
Factory factory = new AAAfactory();
AAA a = factory.Create();
a.method1();
a.method2();
a.method2();
从上面的简单工厂模式和工厂模式的客户端代码就明显发现,如果要修改成新创建的功能类的化,工厂模式只要把子工厂类换了就可以,而简单工厂模式因为耦合度比较高就比较麻烦了。(原因是工厂模式的用了接口和多态的特性)