博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式C#合集--工厂方法模式
阅读量:5234 次
发布时间:2019-06-14

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

简单工厂,代码:

public interface ISpeak{    public void Say();}public class Hello : ISpeak{    public void Say()    {        //throw new NotImplementedException();        Console.WriteLine("Hello");    }}public class Bye : ISpeak{    public void Say()    {        Console.WriteLine("Bye");    }}public class Factory{    public static ISpeak Creator(string type)    {        switch (type)        {            case "hellow":                return new Hello();            case "bye":                return new Bye();            default:                return null;        }    }}

  毕竟是简单工厂,思路相对简单,将实例的创建都放在一个地方,根据传入的参数不同,生成不同的对象给对方。

  

  工厂方法:还是使用上面的打招呼类

public interface IFactory    {        public ISpeak Creator();    }    public class HellowFactory : IFactory    {        public override ISpeak Creator()        {            return new Hello();        }    }    public class ByeFactory : IFactory    {        public override ISpeak Creator()        {            return new Bye();        }    }

  这里就要注意了,区别很容易就看得出来,简单工厂里提供了一个静态的方法,随时可以供提供者访问,而工厂方法则是将工厂类抽象了出来,给了一个接口,生成Hellow或者Bye需要通过对应的工厂来生产,这样如果加一个早上好就需要新创建一个工厂类了,似乎越来越麻烦了,但是实际我们在写程序的时候不可能是这么简单的,牵涉到不同需求时,如果需要用到上面的单例模式时,我们就可以把新的单例逻辑写在新的工厂类中。但工厂方法模式确实会造成过多的工厂类,所以可以考虑将简单工厂和工厂方法结合起来。也有很多人把这两个模式合成工厂方法模式,认为简单工厂是工厂方法的一种。

转载于:https://www.cnblogs.com/TIEDPAG/p/6252828.html

你可能感兴趣的文章
uva 10137 The trip
查看>>
数据库锁机制及乐观锁,悲观锁的并发控制
查看>>
03 线程池
查看>>
201771010125王瑜《面向对象程序设计(Java)》第十三周学习总结
查看>>
手机验证码执行流程
查看>>
python 基础 ----- 变量
查看>>
设计模式课程 设计模式精讲 2-2 UML类图讲解
查看>>
Silverlight 的菜单控件。(不是 Toolkit的)
查看>>
初识lua
查看>>
我是插件狂人,jDuang,jValidator,jModal,jGallery
查看>>
张季跃 201771010139《面向对象程序设计(java)》第四周学习总结
查看>>
如何解除循环引用
查看>>
android中fragment的使用及与activity之间的通信
查看>>
jquery的contains方法
查看>>
python3--算法基础:二分查找/折半查找
查看>>
Perl IO:随机读写文件
查看>>
转:基于用户投票的排名算法系列
查看>>
WSDL 详解
查看>>
[转]ASP数组全集,多维数组和一维数组
查看>>
C# winform DataGridView 常见属性
查看>>