C#设计模式-简单工厂模式

以面向对象的分析设计编程思想,考虑通过封装,继承,多态把程序的耦合度降低,通过使用设计模式使得程序更加灵活,容易修改,并且易于复用。
通过将功能都封装成一个类,然后建立一个工厂类就可以将所有的功能都通过这个工厂来生成所需要的产品。
计算器例子-通过简单工厂模式
1、所有的加减乘除的功能都有独立的类继承自运算
2、通过工厂来将加减乘除的类功能实现
3、客户端调用

using System;

namespace shaoxiongC_sharp
{
    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 = 0;
            result = this.NumberA + this.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("Wrong Input");
            }
            result = NumberA / NumberB;
            return result;
        }
    }
    class operationFactory
    {
        public static Operation createOperate(string operate)
        {
            Operation oper = null;
            switch (operate)
            {
                case "+":
                    oper = new operationAdd();
                    break;
                case "-":
                    oper = new operationSub();
                    break;
                case "*":
                    oper = new operationSub();
                    break;
                case "/":
                    oper = new operationDiv();
                    break;
            }
            return oper;
        }
    }
    class MainClass
    {
        public static void Main(string[] args)
        {
            Operation oper;
            oper = operationFactory.createOperate("+");
            oper.NumberA = 1;
            oper.NumberB = 2;
            double result = oper.GetResult();
            Console.WriteLine("运算结果是:"+result);
        }
    }
}

运行效果
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章