简单工厂,抽象工厂,工厂方法区别

1.简单工厂:设计模式

简单工厂模式也叫静态工厂模式,在工厂类中包含了逻辑判断,根据客户端的选择来动态建立实例,去除了客户端对具体产品的依赖。可是若是须要添加新的产品,就须要修改工厂类,因此简单工厂违背了设计模式中的开闭原则,因此说简单工厂并不属设计模式。ide

构成:spa

一个包含逻辑判断的具体工厂类;设计

一个抽象产品类,能够派生多个具体的产品类。code

 public class OperationFactory
    {
        /// <summary>
        /// 根据传入的参数,建立对应的实例
        /// </summary>
        /// <param name="operate">计算符号,加减乘除</param>
        /// <returns>返回对应的实例</returns>
        public static Operation getOperation(string operate) {
            Operation operation = null;
            switch (operate)
            {
                case "+":
                    operation = new 加法();
                    break;
                case "-":
                    operation = new 减法();
                    break;
                case "*":
                    operation = new 乘法();
                    break;
                case "/":
                    operation = new 除法();
                    break;
            }
            return operation;
        }
    }
View Code

 

 

2.工厂方法模式:对象

定义一个抽象工厂类,在这个抽象工厂类中负责制定一些规范,将实际建立产品工做放到到子类当中。核心工厂类再也不负责产品的建立,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,相对于简单工厂来讲能够使系统在不修改工厂的状况下,引进新的产品。每一个具体工厂类只能建立一个具体产品类的实例。blog

 

构成:接口

一个抽象产品类,能够派生出多个具体产品类。get

一个抽象工厂类,能够派生出多个具体工厂类。

string

 

 

 

3.抽象工厂模式

 

 

抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式能够向客户端提供一个接口,使客户端在没必要指定产品的具体的状况下,建立多个产品族中的产品对象。相对于工厂方法模式来讲,抽象工厂有多个抽象产品类,每一个具体工厂类能够建立多个具体产品类的实例。而不是像工厂方法那样,一个工厂只能建立一个产品。

 

构成:

多个抽象产品类,每一个抽象产品类能够派生出多个具体产品类。

一个抽象工厂类,能够派生出多个具体工厂类。

相关文章
相关标签/搜索