《大话设计模式》——简单工厂模式1

之前的编程一般都是写一个个的方法,然后调用,自我感觉也还行,但是这不是面向对象编程!
为什么用类代替方法?
方法是单个独立地,顶多算是结构化编程。面向对象编程:封装、多态、继承、抽象。


面向对象编程:类、封装、多态、继承。


目标:易于维护、扩展、复用、灵活性好、降低耦合度。


手段:业务的封装:让业务逻辑与界面逻辑分开,降低耦合度。耦合度低了才易于维护和扩展。

简单工厂模式的关键是:
1、父类子类间的继承;
2、创建一个子类,复制给父类对象;
3、虚函数 重写。

缺点:只是解决了各个子类对象的创建问题,扩展时总是需要修改工厂类。


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

namespace WindowsFormsApplication1
{
    public class Operation
    {
        private double _Num1=0;
        private double _Num2=0;

        public double Num1
        {
            get { return _Num1; }
            set { _Num1 = value; }
        }
        public double Num2
        {
            get { return _Num2; }
            set { _Num2 = value; }
        }
        public virtual double GetResult()
        { 
            double result=0;
            return result;
        }
    }

    class OperationAdd : Operation
    {
        public override double GetResult()
        {
            return Num1 + Num2;
        }
    }

    class OperationSub : Operation
    {
        public override double GetResult()
        {
            return Num1 - Num2;
        }
    }

    class OperationMul : Operation
    {
        public override double GetResult()
        {
            return Num1 * Num2;
        }
    }

    class OperationDiv : Operation
    {
        public override double GetResult()
        {
            if (Num2 == 0)
                throw new Exception("除数不能为0。");
            return Num1 / Num2;
        }
    }

    public class OperationFactory
    {
        public static Operation createOperation(String operation)
        {
            Operation oper = null;
            switch (operation)
            { 
                case "+":
                    oper = new OperationAdd();
                    break;
                case "-":
                    oper = new OperationSub();
                    break;
                case "*":
                    oper = new OperationMul();
                    break;
                case "/":
                    oper = new OperationDiv();
                    break;
            }
            return oper;
        }
    }
}



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