大话设计模式-简单工厂模式

 前言

              系列的学习大话设计模式笔记,希望在学习的道路上能不断完善、提高自己的认识。这次文章对学习的简单工厂模式来做一些认识。

    在结束了VB的学习后这是最新的面向对象的洗礼,开始的难理解、长时间的不能理解,在找些资料看看后,好像有点意思但又没什么概念。我们在这样的情况下更上一层了,因为我们现在不单单的为实现某个小功能而完事,更高的角度去设计怎么更经济、更安全、可维护性高,真正的从设计者的角度出发来考虑问题。


 简单工厂模式的介绍

  1.定义:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。以上是百度的内容,


  2.简单的来说,就是负责加工的工厂,因此在大化设计模式中他同样可以理解为负责生产的一个类,最常使用的new创建对象时,该类就依赖于这个对象因此之间的耦合度高,当需求变化时,我们就不得不去修改此类的源码,此时我们可以运用面向对象(OO)的很重要的原则去解决这一的问题,该原则就是——封装改变,既然要封装改变,自然也就要找到改变的代码,然后把改变的代码用类来封装,这样的一种思路也就是我们简单工厂模式的实现方式了。下面通过一个现实生活中的例子来引出简单工厂模式。

    简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。也就说实例化谁。

   大话设计模式-简单工厂模式_第1张图片


        3.对于书上的例子我们现在展示:

  (1)operation运算类

  

   public class Operation  
    {  
        private double _numberA = 0;  
        private double _numberB = 0;  
        //NumberA属性  
        public  double NumberA  
        {  
            get { return _numberA; }  
            set { _numberA = value; }  
        }  
        //NumberB属性  
        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 OperationDiv : Operation  //除法法类,继承运算类
    {  
        //方法重写  
        public override double GetResult()  
        {  
            double result = 0;  
            //判断  
            if (NumberB == 0)  
                throw new Exception("除数不能为0!");  
            else   
                result = NumberA / NumberB;  
            return result;  
        }  
    }  
  (2) 简单工厂模式

public  class OperationFactory  
public static Operation createOperate(string operate)  
        {  
            Operation oper = null;  
            switch (operate)  
            {  
                //实例化加法类  
                case "+":  
                    oper = new OperationAdd();  
                    break;  
                    break;  
                //实例化除法类  
                case "/":  
                    oper = new OperationDiv();  
                    break;  
            }  
            return oper;  
        }  
   客户端代码:

            Operation oper;  
            oper = OperationFactory.createOperate("+");  
            oper.NumberA = 1;  
            oper.NumberB = 2;  
            double resultAdd = oper.GetResult();  
            //显示运算结果  
            Console.WriteLine("加法运算的结果值为:{0}", resultAdd);  
            Console.ReadLine();  
    简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
    但是简单工厂模式本身包括了所有的运算方式,每次维护或者扩展计算方法都要改动这个工厂,以致代码重新编译部署,解决方法在后续的学习当中会出现。也就是在简单工厂增加了新类,那么这个工厂也要随之更改。
   

你可能感兴趣的:(大话设计模式-简单工厂模式)