C#设计模式之工厂模式(1)

使用设计模式必须首先要理解对象、继承和接口,一般情况下我们创建对象时采用new的方式,这和程序如何创建对象有关。再进一步思考,很多时候根据程序的需求不同我们要创建对象,因而我们可以将创建过程抽象成一个专门的类中,这样程序就会更灵活,更通用。

我们可以利用一个共同的基类以完全通用的方式与这些提供程序相关的对象交互。工厂模式里提供了一个简单的决策类,它根据提供的数据返回基类中的多个子类的一个。

1.      简单工厂模式:它的运行一般是根据提供的数据,返回已定义的几个类中的一个类中的实例。通常它返回的类中都有一个共同的父类和方法,但在每个子类中,该方法的所要执行的任务是不同的,而且根据不同的数据进行了优化。下面是示意图


示例代码,这是一个计算器的范例

public class Operation
    {
        public double NumberA { get; set; }
        public double NumberB { get; set; }

        public virtual double GetResult()
        {
            double result = 0;
            return result;
        }
    }

    public class OperationAdd : Operation
    {
        public override double GetResult()
        {
            double result = NumberA + NumberB;
            return result;
        }
    }

    public class OperationSub : Operation
    {
        public override double GetResult()
        {
            double result = NumberA - NumberB;
            return result;
        }
    }

    public class OPerationMulti : Operation
    {
        public override double GetResult()
        {
            double result = NumberA * NumberB;
            return result;
        }
    }

    public class OperationDiv : Operation
    {
        public override double GetResult()
        {
            double result = NumberA / NumberB;
            return result;
        }
    }
创建简单工厂

public static Operation Creatoperation(string operate)
        {
            Operation oper = null;
            switch (operate)
            {
                case "+":
                    oper = new OperationAdd();
                    break;
                case "-":
                    oper = new OperationSub();
                    break;
                case "*":
                    oper = new OPerationMulti();
                    break;
                case "/":
                    oper = new OperationDiv();
                    break;
                default:
                    break;
            }
            return oper;
        }

调用简单工厂

Operation oper = new Operation();
oper=SimpleFactory01.Creatoperation("/");
oper.NumberA = 10;
oper.NumberB = 20;
Console.WriteLine(oper.GetResult());
Console.ReadLine();




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值