设计模式之 ------工厂模式

       谨记    设计模式的学习是帮助你设计更好的代码,而不能帮助你更好的体改你的代码写作水平,所以一点要记住:1 多写代码  2   多提炼代码  3   不能硬套模式

       就我这两天看的工厂模式来说一说我的理解:

       工厂模式顾名思义  就是生产一系列具有相同相同特征  完成特性相同的 实例的一个工厂类;

       首先:  一个公共类 :就是这些实例的共有特性的一个类,我将之理解为包含了共有的属性信息 和 一些可供子类override的操作函数;

                   将每一个实例对象有类来实现,继承公共类,并且将要完成的函数操作重新实现;

                   一个用户条用程序:可以根据自己的需求条用工厂类来创建相应的实例   。这里应该注意   创建的实例的返回类型是公共类的类型, 在公共类中会根据自己的需求来条用需要的子类来new一个。

       工厂模式还需要深入的理解,我是根据《大话设计模式》来学习的:

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

namespace test1.logic
{
    public 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;
            result = NumberA + NumberB;
            return result;
        }
    }
    class operationDiv : Operation
    {
        public override double Getresult()
        {
            double result;
            result = NumberA - NumberB;
            return result;
        }
    }
    //扩展的地方  可以在扩展其他类的操作
}


/*************************************************************************************************/

    public class operationfactory
    {
        public static Operation CreatOperation (string opr) //这里返回的类型是父类的类型
        {
            Operation opreation = null;
            switch (opr)
            {
                case"+":
                    opreation = new operationAdd();
                    break;
                case "-":
                    opreation = new operationDiv();
                    break;
                    //再要添加运算操作的时候只要增加case操作就可以了。
            }
            return opreation;

        }


/**********************************************************************************************/

    class main
    {
        static void Main()
        {
            Operation opr;
            opr = operationfactory.CreatOperation("+");
            opr.NumberA = 1;
            opr.NumberB = 2;
            double result = opr.Getresult();
            Console.WriteLine("the " + result);
            Console.ReadLine();
        }
    }


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值