专栏首页游戏开发之旅设计模式之简单工厂模式

设计模式之简单工厂模式

版权声明:本文为博主原创文章,遵循 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》显示,第一行是接口名称,第二行为接口方法;接口的另一种表示方法,俗称“棒棒糖表示法”,就是在类图的矩形框上方画一个“棒棒糖”形状;

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

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

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

关联关系:实线+箭头

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

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

依赖关系:虚线箭头

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 设计模式之策略模式

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

    bering
  • 我使用的Unity开发多语言处理方案

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

    bering
  • Unity游戏开发Photon Server之客户端架构

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

    bering
  • 设计模式二十四章经之命令模式

    我就是马云飞
  • 设计模式之适配器模式 adapter 适配器模式分类概念角色详解 类适配器 对象适配器 接口适配器 双向适配器

    可以看得出来,大陆和港版插座面板,都是作为电源的角色,他们的功能是相似的或者说相近的

    noteless
  • 回归设计模式的本质:设计原则

    作为开发人员,或多或少都会熟悉或了解一些设计模式,如单例模式、工厂模式、观察者模式等等。但并非都能理解这些设计模式背后的本质,从而可能会导致对模式单纯的套用或滥...

    Keegan小钢
  • Gof设计模式之装饰者模式(七)

    转发于网络(过一段时间会更新一个自己的新版本) 定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的...

    用户1257393
  • Microsoft SQL Server 2012 简体中文64位版

    Microsoft SQL Server 2012是由微软推出的新一代数据库平台,最新版的SQL Server 2012在功能对云平台进行了支持,可以使开发者更...

    凯哥Java
  • 内存虚拟化到底是咋整的?

    腾讯云TStack
  • java中的排序(自定义数据排序)--使用Collections的sort方法

        当引用类型的内置排序方式无法满足需求时可以自己实现满足既定要求的排序,有两种方式:

    wfaceboss

扫码关注云+社区

领取腾讯云代金券