• 工厂模式的介绍、优缺点


    二、工厂模式

    1.介绍

          在上一节中介绍了“简单工厂模式”,现在来介绍下“工厂模式”,在“工厂模式”和“简单工厂模式”中,最主要,最明显的区别之一是“工厂模式”下可以设立多个子工厂,而不是所有的产品有单一的工厂来生产,而是给各自特色的子工厂来生产。

    2.例子

          我们还是继续使用“计算器”来作为例子吧。由于在产品Product的结构模式变化不大,所以就不在载入(详情看“简单工厂模式”的随笔),主要载入“工厂模式”的代码

    a.父工厂接口(IFactory接口)

    import SimpleFactory.Operation;
    
    public interface IFactory {
    
    	public Operation createOperation();
    }
    

    b.子工厂(加法工厂,减法工厂,乘法工厂,除法工厂)

    import SimpleFactory.Operation;
    import SimpleFactory.OperationAdd;
    import SimpleFactory.OperationSub;
    import SimpleFactory.OperationMul;
    import SimpleFactory.OperationDiv;
    
    
    public class AddFactory implements IFactory{
    
    	public Operation createOperation() {
    		// TODO Auto-generated method stub
    		return new OperationAdd();
    	}
    }
    
    public class SubFactory implements IFactory{
    
    	@Override
    	public Operation createOperation() {
    		// TODO Auto-generated method stub
    		return new OperationSub();
    	}
    
    }
    
    public class MulFactory implements IFactory{
    
    	@Override
    	public Operation createOperation() {
    		// TODO Auto-generated method stub
    		return new OperationMul();
    	}
    
    }
    
    public class DivFactory implements IFactory{
    
    	@Override
    	public Operation createOperation() {
    		// TODO Auto-generated method stub
    		return new OperationDiv();
    	}
    
    }
    

    c.客户端

    import SimpleFactory.Operation;
    
    public class Client {
        
        public static void main(String[] args) {
        
            IFactory operFactory = new AddFactory();
            Operation oper = operFactory.createOperation();
            oper.set_numberA(1);
            oper.set_numberB(2);
            double result = oper.getResult();
            System.out.println(result);
        }
    }

    d.UML图(例子是从《大话设计模式》中借鉴而来的,这是一本很不错的书)

    3.评价:

    a.在客户端Client中可以将工厂模式的主要结构看着很清楚,首先我们要有IFactory这个工厂的父接口,所有的子类或者子接口都可以实现它。AddFactory则是子类的代表之一,所以利用java的多态来实现,降低代码的耦合性。而同时每个子工厂中拥有每条生产独特产品的生产线。由此,工厂和产品挂上钩了,联系上了。每个子工厂生产出来的都是独特的产品。

    b.比“简单工厂模式”的优缺点

    优点:克服了简单工厂违背开放-封闭原则的缺点,又保留了封装对象创建过程的优点,降低客户端和工厂的耦合性,所以说“工厂模式”是“简单工厂模式”的进一步抽象和推广。

    缺点:每增加一个产品,相应的也要增加一个子工厂,加大了额外的开发量。

  • 相关阅读:
    【Android Studio安装部署系列】二十四、Android studio中Gradle插件版本和Gradle版本关系
    【Android Studio安装部署系列】二十三、Android studio查看Gradle版本号
    linux查看文件前几行和后几行的命令
    iphone订阅服务在那里取消
    idea 默认全局配置maven,避免每次新建项目都需要指定自己的maven目录
    Java:session中的invalidate()的作用是什么呢?求解
    SESSION.INVALIDATE()
    Session中清除对象方法比较
    linux--Linux 各目录及每个目录的详细介绍
    Linux 下各个目录的作用及内容
  • 原文地址:https://www.cnblogs.com/kgrdomore/p/4242081.html
Copyright © 2020-2023  润新知