设计模式之简单工厂模式

设计模式之简单工厂模式

           一.简单工厂模式的好处:
   容易修改而且可以复用,通过封装,继承,多态把程序的耦合度降低,从而使得程序可维护,可扩展灵活性还好;
   二.简单工厂模式举例:
   就拿简单的计算器来说吧,使用工厂模式实现加减乘除功能,使得该计算器可以在控制台,windows程序,web程序,手机程序都可以使用,是不是很开心呢,这好像古代的活字印刷术呢;
    好了,先看看类图吧
下面看看代码:(Operation类)
 public class Operatio
    {
        public double result = 0;
        private double num1;
        private double num2;
        public double Num2
        {
            get
            {
                return num2;
            }

            set
            {
                num2 = value;
            }
        }

        public double Num1
        {
            get
            {
                return num1;
            }

            set
            {
                num1 = value;
            }
        }

        public virtual double GetResult()
        {
            
            return result;
        }
    }
下面就是继承自Operation类的子类,就以除法类为例吧:
  public class OperationDiv:Operatio
    {
       
        public override double GetResult()
        {
            if(Num2!=0)
            {
                result = Num1 / Num2;
            }
            else
            {
                throw new Exception("除数不能为0");
            }
            return base.GetResult();
        }
    }
接下来就是简单运算工厂类了,也是重点
public class OperationFactory
    {
        public static Operatio CreateOperate(string operate)
        {
            Operatio oper = null;
            switch(operate)
            {
                case "+":
                    oper = new OperationAdd();break;
                case "-":
                    oper = new OperationSub();break;
                case "*":
                    oper = new OperationMulti();break;
                case "/":
                    oper = new OperationDiv();break;
            }
            return oper;
        }
    }
好了,现在类都完成了,那么怎么实现呢,看客户端代码:
namespace 简单工厂模式
{
    class Program
    {
        static void Main(string[] args)
        {
            Operatio oper = null;
            oper = OperationFactory.CreateOperate("+");
            oper.Num1 = 2;
            oper.Num2 = 3;
            double result=oper.GetResult();
            Console.WriteLine(result);
            Console.ReadKey();
        }
    }
}
好了简单工厂模式就到这里,下面说一些关于看UML类图的一些小知识:
   首先,类图分为三层,第一层为类的名称(抽象类用斜体表示),第二层为类的特性,通常为字段和属性,第三层为类的操作,通常是方法或行为。注意前面的符号,'+'表示public,'-'表示private,'#'表示protected。
   接口图,与类图的区别主要是顶端有《interface》显示,第一行是接口名称,第二行为接口方法;接口的另一种表示方法,俗称“棒棒糖表示法”,就是在类图的矩形框上方画一个“棒棒糖”形状;
   还有就是类与类,类与接口之间的关系了:
      继承关系:空心三角形+实线
      接口关系:空心三角形+虚线
      关联关系:实线+箭头
      聚合关系(例如:一个雁群和一只大雁,聚合表示一种弱的“拥有”关系):空心菱形+实线箭头
      合成关系(例如:一只鸟和它的一对翅膀,合成是强的“拥有”关系):实心菱形+实线箭头
       依赖关系:虚线箭头




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值