首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之简单工厂模式

设计模式之简单工厂模式

作者头像
bering
发布2019-12-03 15:41:48
3080
发布2019-12-03 15:41:48
举报
文章被收录于专栏:游戏开发之旅游戏开发之旅

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/CJB_King/article/details/61413576

设计模式之简单工厂模式

一.简单工厂模式的好处:

容易修改而且可以复用,通过封装,继承,多态把程序的耦合度降低,从而使得程序可维护,可扩展灵活性还好;

二.简单工厂模式举例:

就拿简单的计算器来说吧,使用工厂模式实现加减乘除功能,使得该计算器可以在控制台,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》显示,第一行是接口名称,第二行为接口方法;接口的另一种表示方法,俗称“棒棒糖表示法”,就是在类图的矩形框上方画一个“棒棒糖”形状;

还有就是类与类,类与接口之间的关系了:

继承关系:空心三角形+实线

接口关系:空心三角形+虚线

关联关系:实线+箭头

聚合关系(例如:一个雁群和一只大雁,聚合表示一种弱的“拥有”关系):空心菱形+实线箭头

合成关系(例如:一只鸟和它的一对翅膀,合成是强的“拥有”关系):实心菱形+实线箭头

依赖关系:虚线箭头

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 设计模式之简单工厂模式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档