美文网首页
2.工厂方法模式

2.工厂方法模式

作者: 卡布萨岛 | 来源:发表于2018-10-19 00:24 被阅读0次

原理

工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。

与简单工厂模式对比:

1 工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。首先完全实现‘开-闭 原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。
2.工厂方法模式对简单工厂模式进行了抽象。有一个抽象的Factory类(可以是抽象类和接口),这个类将不再负责具体的产品生产, 而是只制定一些规范,具体的生产工作由其子类去完成。在这个模式中,工厂类和产品类往往可以依次对应。即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品。

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 工厂方法模式
{
    class Program
    {
        static void Main(string[] args)
        {
            IFactory operFactory = new AddFactory();
            Operation oper = operFactory.CreateOperation();
            oper.NumberA = 1;
            oper.NumberB = 2;
            double result = oper.GetResult();
            Console.WriteLine(result);

            Console.ReadKey();
        }
    }
}

Operation.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 工厂方法模式
{
    //构建一个工厂
    interface IFactory
    {
        Operation CreateOperation();
    }
    //加法类工厂
    class AddFactory : IFactory
    {
        public Operation CreateOperation()
        {
            return new OperationAdd();
        }
    }
    //减法类工厂
    class SubFactory : IFactory
    {
        public Operation CreateOperation()
        {
            return new OperationSub();
        }
    }
    //乘法类工厂
    class MulFactory : IFactory
    {
        public Operation CreateOperation()
        {
            return new OperationMul();
        }
    }
    //除法类工厂
    class DivFactory : IFactory
    {
        public Operation CreateOperation()
        {
            return new OperationDiv();
        }
    }



    //////////////////////////简单工厂中的实现/////////////////////////////
    //运算类
    class Operation
    {
        private double _numberA = 0;
        private double _numberB = 0;

        public double NumberA
        {
            get { return _numberA; }
            set { _numberA = value; }
        }
        public double NumberB
        {
            get { return _numberB; }
            set { _numberB = value; }
        }
        public virtual double GetResult()
        {
            double result = 0;
            return result;
        }
    }
    //加法类
    class OperationAdd : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA + NumberB;
            return result;
        }
    }
    //减法类
    class OperationSub : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA - NumberB;
            return result;
        }
    }
    //乘法类
    class OperationMul : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA * NumberB;
            return result;
        }
    }
    //除法类
    class OperationDiv : Operation
    {
        public override double GetResult()
        {
            double result = 0;
            if (NumberB == 0)
            {
                throw new Exception("除数不能为0.");
            }
            result = NumberA / NumberB;
            return result;
        }
    }
}

相关文章

  • php设计模式之工厂模式

    1. 工厂模式分类 工厂模式具体可分为三类模式:简单工厂模式,工厂方法模式,抽象工厂模式; 2. 简单工厂模式 又...

  • 设计模式之工厂模式

    文章结构1.工厂模式的分类2.参考文章与书籍 1.工厂模式的分类 工厂模式分为简单工厂模式、工厂方法、抽象工厂三种...

  • 工厂模式

    本章内容 1. 简单工厂模式(也叫静态工厂模式),2.工厂方法模式,3.抽象工厂模式特别建议大家可以敲下设计模式的...

  • 【重温设计模式】工厂设计模式

    一.介绍 工厂设计模式的分类 1.简单工厂模式2.工厂方法模式3.抽象工厂模式 工厂设计模式在工作中的应用 1.s...

  • 工厂方法模式

    1.简单工厂模式 先看一下简单工厂模式 代码: 2.工厂方法模式 简单工厂模式大家比较熟悉也比较简单,但是简单工厂...

  • 《大话设计模式》-GoF的24种设计模式

    工厂方法模式 1. 单例模式 2. 简单工厂模式 3. 工厂模式 4. 建造者模式 5. 原型模式 6. 解释器模...

  • 工厂模式

    1.简单工厂模式 2.工厂方法模式 实际使用中工厂可采用spring注入,返回结果可采用泛型 3.抽象工厂模式

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 38种Javascript设计模式

    38种设计模式 1.简单工厂模式 2.工厂方法模式 3.抽象工厂模式 4.建造者模式 5.原型模式 6.单例模式 ...

  • 2020-11-06--设计模式

    1.设计模式分为23中按种类分的话分为创建型模式、行为型模式、结构型模式。2.创建模式:2.1、工厂方法:工厂方法...

网友评论

      本文标题:2.工厂方法模式

      本文链接:https://www.haomeiwen.com/subject/ynpezftx.html