8.工厂方法
作者:互联网
package factoryMethodModel; /** * 工厂方法模式 * * @author LiMing E-mail:1151143484@qq.com * @date 2017年6月14日 上午8:19:28 * * * 简单工厂模式前边已经提到过了:缺点是违背了开放封闭原则(对扩展开放 但是对修改不是封闭的 每次添加新的功能需要修改工厂类) * 工厂方法模式是简单工厂模式的升级 不进具有简单工厂模式的优点 还复合开放封闭原则 因为他是把创建每一类对象都封装成一个工厂 * 这样如果需要添加新的类别 只需要添加新的子类工厂方法就行了 是不需要修改父类工厂方法的(修改封闭) 具体实现看下边 * * 工厂方法唯一的不足就是把逻辑判断放到客户端 后期可以通过反射 对就是反射来简化客户端的操作 * */ public class FactoryMethodModel { public static void main(String[] args) { // 使用加法 Oprator add = AddFactory.createOprator(); add.method(); Oprator reduce = ReduceFactory.createOprator(); reduce.method(); /* * 就在这个时候 想加一个乘法方法 只需要加一个乘法执行方法class Multiplication 和 乘法构造工厂 * 不需要修改任何已存在的类 添加完之后 就可以很方便的用了 */ Oprator mltiplication = MultiplicationFactory.createOprator(); mltiplication.method(); } } /** * 抽象工厂类 */ class Factory { public static Oprator createOprator() { return new Oprator(); } } /** * 加法类工厂 */ class AddFactory extends Factory { public static Oprator createOprator() { return new Add(); } } /** * 减法类工厂 */ class ReduceFactory extends Factory { public static Oprator createOprator() { return new Reduce(); } } /** * 操作父类 */ class Oprator { public void method() { System.out.println("父类操作方法"); } } /* * 加法类 */ class Add extends Oprator { public void method() { System.out.println("执行加法"); } } /* * 减法类 */ class Reduce extends Oprator { public void method() { System.out.println("执行减法"); } } /* * 添加乘法 */ // 操作类 class Multiplication extends Oprator { public void method() { System.out.println("执行乘法"); } } // 工厂类 class MultiplicationFactory extends Factory { public static Oprator createOprator() { return new Multiplication(); } }
标签:Oprator,public,method,createOprator,工厂,方法,class 来源: https://blog.51cto.com/u_12198094/2700001