博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之-简单工厂设计模式
阅读量:5286 次
发布时间:2019-06-14

本文共 1858 字,大约阅读时间需要 6 分钟。

我们来看一下简单工厂设计模式,在这里我就拿控制台应用做演示了,来做一个加减乘除的操作.

在这个项目中我们共需要 操作类(Operaction),工厂类(factory),加法类(Add),调用(Program),调用就在Program中调用了。

创建好控制台程序后我们来创建一个操作类(Operaction),代码如下

public class Operaction    {        public int Num1 { get; set; }        public int Num2 { get; set; }                public virtual int GetResult()        {            return 0;        }    }

定义了两个int类型的属性一个是 Num1和Num2,然后又定了一个虚方法,方法就是用来做计算的,因为我们不知道它要执行那个操作想要什么结果,所以我们来定义虚方法,让其他的类去实现方法。

然后我们创建加法类(Add),代码如下

public class Add:Operaction    {               public override int GetResult()        {            int result = 0;            result = Num1 + Num2;            return result;        }    }

Add类继承了Operaction,那就拥有了Operaction的方法和属性,我们只需要override重写GetResult方法即可,然后执行加法操作,至于怎么写代码,就看自己了

然后我们创建工厂类

public static class Factory    {        public static Operaction Open(string opac)        {            Operaction o = null;            switch (opac)            {                case "+":                    o=new Add();                    break;                default:                    break;            }            return o;        }    }

为了方便调用我们把它改成static静态的类,方法也是静态的方法。注意这里:

public static Operaction Open(string opac)

我们返回的是一个对象 操作类(Operaction),既然要返回Operaction,那就要先new一个Operaction,但是我们不知道它要进行一个什么操作,所以先new一个空的,参数传过来一个字符串,然后使用switch进行判断,如果是 “+” 就new一个Add的类,Add类中重写了计算方法(GetResult),所以这执行的就是加法计算,因为Add这个类已经继承了Operaction所以是可以这么做的,里式替换原则,也不多说了。然后我们return返回;工厂类就完成了。

然后就是调用了,在Program中调用

static void Main(string[] args)        {            Operaction op = Factory.Open("+");            op.Num1 = 5;            op.Num2 = 3;            Console.WriteLine(op.GetResult());        }

Main方法中有看这段代码:

Operaction op = Factory.Open("+");

在调用的时候传入参数 “+” 在工厂模式的switch中就会判断,new一个Add(加法类)给你,加法类中又重写了计算的操作,最终结果也就出来了。

同样,减法,乘法,除法也是如此。 工厂模式也可以做很多的事情,在这里只是举了一个小例子而已

转载于:https://www.cnblogs.com/NiuZiXiao/p/10223499.html

你可能感兴趣的文章
IEEE 754浮点数表示标准
查看>>
declare 结构用来设定一段代码的执行指令
查看>>
图解算法读书笔记
查看>>
调试学习笔记
查看>>
解开lambda最强作用的神秘面纱
查看>>
Java基础:Object类中的equals与hashCode方法
查看>>
C#拦截Http请求
查看>>
图片下载器
查看>>
找不到docker.socket解决方法
查看>>
Activity生命周期
查看>>
HTML中head头结构
查看>>
sql server和mysql中分别实现分页功能
查看>>
jQuery CircleCounter的环形倒计时效果
查看>>
kafka server管理
查看>>
系统设计与分析(六)
查看>>
Java IO-1 File类
查看>>
HW5.29
查看>>
Linux查看物理CPU个数,核数,逻辑CPU个数;内存信息
查看>>
sqlserver查询效率
查看>>
FoxMail邮件设置
查看>>