8.工厂方法

来源:互联网 发布:人民币大写转换编程 编辑:程序博客网 时间:2024/06/03 13:13
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();}}

原创粉丝点击