C#设计模式
计模式就是编码界的“独孤九剑”,学成之后可以天下无敌……
抠脚王姨
独立游戏设计师……
展开
-
D1:设计模式六大原则
目录:设计模式六大原则(1):单一职责原则设计模式六大原则(2):里氏替换原则设计模式六大原则(3):依赖倒置原则设计模式六大原则(4):接口隔离原则设计模式六大原则(5):迪米特法则设计模式六大原则(6):开闭原则设计模式六大原则(1):单一职责原则定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责...原创 2019-03-15 16:14:31 · 274 阅读 · 0 评论 -
D2:C#设计模式之一单例模式(Singleton Pattern)【创建型】
一、引言 看了李建忠老师的讲的设计模式已经有一段时间了(这段时间大概有一年多了),自己还没有写过自己的、有关设计模式的文章。这次想写一些关于设计模式的文章,用自己的理解和代码来写,算是复习一遍。写作的过程中也会多看看其他大牛的文章,争取让自己的理解正确,否则把大家带跑偏了,就是我的过错了。今天就开始我们第一个设计模式,该模式是:【单例模式】,英文名称:Singleton Pattern,...原创 2019-03-15 16:16:21 · 211 阅读 · 0 评论 -
D3:C#设计模式之二工厂方法模式(Factory Method Pattern)【创建型】
一、引言 在上一篇文章中我们讲解了过渡的一种模式叫做【简单工厂】,也有叫【静态工厂】的,通过对简单工厂模式得了解,我们也发现了它的缺点,就是随着需求的变化我们要不停地修改工厂里面的方法的代码,需求变化越多,里面的If--Else--也越多,这样就会造成简单工厂的实现逻辑过于复杂。设计模式是遵循一定原则而得来的,比如,我们要怎么增加代码,怎么修改代码,不是想怎么来就怎么来的,其中一个原...原创 2019-03-15 16:18:34 · 271 阅读 · 0 评论 -
D4:C#设计模式之三抽象工厂模式(AbstractFactory)【创建型】
一、引言 写了3篇有关设计模式的文章了,大家有了些反馈,说能从中学到一些东西,我感到很欣慰,那就继续努力。今天我要写第四个模式了,该模式叫抽象工厂。上一篇文章我们讲了【工厂方法】模式,它是为了解决【简单工厂】模式所面对的问题,它的问题就是:如果我们增加新的产品,工厂类的方法就要修改本身的代码,增加产品越多,其逻辑越复杂,同时这样的修改也是不符合【开放关闭原则OCP】,对修改代码关闭,对增...原创 2019-03-15 16:20:27 · 230 阅读 · 0 评论 -
D5:C#设计模式之四建造者模式(Builder Pattern)【创建型】
一、引言 今天我们要讲讲Builder模式,也就是建造者模式,当然也有叫生成器模式的,英文名称是Builder Pattern。在现实生活中,我们经常会遇到一些构成比较复杂的物品,比如:电脑,它就是一个复杂的物品,它主要是由CPU、主板、硬盘、显卡、机箱等组装而成的。手机当然也是复杂物品,由主板,各种芯片,RAM 和ROM 摄像头之类的东西组成。但是无论是电脑还是手机,他们的组装过程是固定的...原创 2019-03-15 16:21:48 · 213 阅读 · 0 评论 -
D6:C#设计模式之五原型模式(Prototype Pattern)【创建型】
一、引言 在开始今天的文章之前先说明一点,欢迎大家来指正。很多人说原型设计模式会节省机器内存,他们说是拷贝出来的对象,这些对象其实都是原型的复制,不会使用内存。我认为这是不对的,因为拷贝出来的每一个对象都是实际存在的,每个对象都有自己的独立内存地址,都会被GC回收。如果就浅拷贝来说,可能会公用一些字段,深拷贝是不会的,所以说原型设计模式会提高内存使用率,不一定。具体还要看当时的设计,如...原创 2019-03-15 16:22:46 · 229 阅读 · 0 评论 -
D7:C#设计模式之六适配器模式(Adapter Pattern)【结构型】
一、引言 从今天开始我们开始讲【结构型】设计模式,【结构型】设计模式有如下几种:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。【创建型】的设计模式解决的是对象创建的问题,那【结构型】设计模式解决的是类和对象的组合关系的问题。今天我们就开始讲【结构型】设计模式里面的第一个设计模式,中文名称:适配器模式,英文名称:Adapter Pattern。说起这个模式其实很简单,...原创 2019-09-03 19:18:50 · 157 阅读 · 0 评论 -
D8:C#设计模式之七桥接模式(Bridge Pattern)【结构型】
一、引言 今天我们要讲【结构型】设计模式的第二个模式,该模式是【桥接模式】,也有叫【桥模式】的,英文名称:Bridge Pattern。大家第一次看到这个名称会想到什么呢?我第一次看到这个模式根据名称猜肯定是连接什么东西的。因为桥在我们现实生活中经常是连接着A地和B地,再往后来发展,桥引申为一种纽带,比如:丝绸之路是连接亚洲和欧洲的桥梁。有了桥,我们出行方便了,从一个地方到另一个地方在有桥的...原创 2019-09-03 19:19:37 · 168 阅读 · 0 评论 -
D9:C#设计模式之八装饰模式(Decorator Pattern)【结构型】
一、引言 今天我们要讲【结构型】设计模式的第三个模式,该模式是【装饰模式】,英文名称:Decorator Pattern。我第一次看到这个名称想到的是另外一个词语“装修”,我就说说我对“装修”的理解吧,大家一定要看清楚,是“装修”,不是“装饰”。我们长大了,就要结婚,要结婚就涉及到要买房子,买的精装修或者简单装修就可以住的,暂时不谈。我们就谈谈我们购买的是毛坯房。如果我想要房子的内饰是大理石...原创 2019-09-12 15:47:17 · 192 阅读 · 0 评论 -
D10:C#设计模式之九组合模式(Composite Pattern)【结构型】
一、引言 今天我们要讲【结构型】设计模式的第四个模式,该模式是【组合模式】,英文名称是:Composite Pattern。当我们谈到这个模式的时候,有一个物件和这个模式很像,也符合这个模式要表达的意思,那就是“俄罗斯套娃”。“俄罗斯套娃”就是大的瓷器娃娃里面装着一个小的瓷器娃娃,小的瓷器娃娃里面再装着更小的瓷器娃娃,直到最后一个不能再装更小的瓷器娃娃的那个瓷器娃娃为止(有点绕,下面我...原创 2019-09-12 15:48:12 · 190 阅读 · 0 评论 -
D11:C#设计模式之十外观模式(Facade Pattern)【结构型】
一、引言 快12点半了,要开始今天的写作了。很快,转眼设计模式已经写了十个了,今天我们要讲【结构型】设计模式的第五个模式,该模式是【外观模式】,英文名称是:Facade Pattern。我们先从名字上来理解一下“外观模式”。我看到了“外观”这个词语,就想到了“外表”这个词语,两者有着很相近的意思。就拿谈恋爱来说,“外表”很重要,如果第一眼看着很舒服、有眼缘,那就有交往下去的可能。如...原创 2019-09-12 15:49:18 · 243 阅读 · 0 评论 -
D12:C#设计模式之十一享元模式(Flyweight Pattern)【结构型】
一、引言 今天我们要讲【结构型】设计模式的第六个模式,该模式是【享元模式】,英文名称是:Flyweight Pattern。还是老套路,先从名字上来看看。“享元”是不是可以这样理解,共享“单元”,单元是什么呢,举例说明,对于图形而言就是图元,对于英文来说就只26个英文字母,对于汉语来说就是每个汉字,也可以这样理解“元”,构成事物的最小单元,这些单元如果大量、且重复出现,可以缓存重复出现的单元...原创 2019-09-12 15:49:58 · 168 阅读 · 0 评论 -
D13:C#设计模式之十二代理模式(Proxy Pattern)【结构型】
一、引言 今天我们要讲【结构型】设计模式的第七个模式,也是“结构型”设计模式中的最后一个模式,该模式是【代理模式】,英文名称是:Proxy Pattern。还是老套路,先从名字上来看看。“代理”可以理解为“代替”,代替“主人”做一些事情,为什么需要“代理”,是因为某些原因(比如:安全方面的原因),不想让“主人”直接面对这些繁琐、复杂的问题,但是这些事情是经“主人”同意或者授意的,如同“主人”...原创 2019-09-12 15:50:33 · 188 阅读 · 0 评论 -
D14:C#设计模式之十三模板方法模式(Template Method Pattern)【行为型】
一、引言 “结构型”的设计模式已经写完了,从今天我们开始讲“行为型”设计模式。现在我们开始讲【行为型】设计模式的第一个模式,该模式是【模板方法】,英文名称是:Template Method Pattern。还是老套路,先从名字上来看看。“模板方法”我第一次看到这个名称,我的理解是,有一个方法的名字叫“模板方法”,后来深入学习之后,感觉最初的理解还没错,也可以换个理解方法,有一个方法包含了一个...原创 2019-09-12 15:52:51 · 159 阅读 · 0 评论 -
D15:C#设计模式之十四命令模式(Command Pattern)【行为型】
一、引言 今天我们开始讲“行为型”设计模式的第二个模式,该模式是【命令模式】,又称为行动(Action)模式或交易(Transaction)模式,英文名称是:Command Pattern。还是老套路,先从名字上来看看。“命令模式”我第一次看到这个名称,我的理解是,可能是一种行为或者一个操作就是一个命令。“命令”这个词语在军队里面用的最多,比如:下达作战命令,接下来就是上战场玩命了。基于这些...原创 2019-10-12 17:16:49 · 299 阅读 · 0 评论 -
D16:C#设计模式之十五迭代器模式(Iterator Pattern)【行为型】
一、引言 今天我们开始讲“行为型”设计模式的第三个模式,该模式是【迭代器模式】,英文名称是:Iterator Pattern。还是老套路,先从名字上来看看。“迭代器模式”我第一次看到这个名称,我的理解是,迭代是遍历的意思,迭代器可以理解为是遍历某某的工具,遍历什么呢?在软件设计中,当然遍历的是集合对象,所以说迭代器模式是遍历集合的一种通用的算法。如果集合只有一种类型,那这个模式就没用了,就是...原创 2019-09-12 15:54:14 · 179 阅读 · 0 评论 -
D17:C#设计模式之十六观察者模式(Observer Pattern)【行为型】
一、引言 今天是2017年11月份的最后一天,也就是2017年11月30日,利用今天再写一个模式,争取下个月(也就是12月份)把所有的模式写完,2018年,新的一年写一些新的东西。今天我们开始讲“行为型”设计模式的第四个模式,该模式是【观察者模式】,英文名称是:Observer Pattern。还是老套路,先从名字上来看看。“观察者模式”我第一次看到这个名称,我的理解是,既然有“观察者”,那...原创 2019-09-12 15:54:49 · 211 阅读 · 0 评论 -
D18:C#设计模式之十七中介者模式(Mediator Pattern)【行为型】
一、引言 今天我们开始讲“行为型”设计模式的第五个模式,该模式是【中介者模式】,英文名称是:Mediator Pattern。还是老套路,先从名字上来看看。“中介者模式”我第一次看到这个名称,我的理解是,在两个对象中间增加一个“中间对象”,“中间对象”协调两个对象的关系,但是随着理解的深入,“中间对象”处理关系的对象可能不只是两个对象,可能是三个对象,或者更多对象。中介者模式在现实生活中的例...原创 2019-09-12 15:55:27 · 146 阅读 · 0 评论 -
D19:C#设计模式之十八状态模式(State Pattern)【行为型】
一、引言 今天我们开始讲“行为型”设计模式的第六个模式,该模式是【状态模式】,英文名称是:State Pattern。无论是现实世界,还是面向对象的OO世界,里面都有一个东西,那就是对象。有对象当然就有状态了。每个对象都有其对应的状态,而每个状态又有对应一些相应的行为,在不同状态下,行为的的方式也是不一样。如果某个对象有多个状态时,那么就会有很多对应的行为。那么对这些状态的判断和根据状态完成...原创 2019-09-12 15:55:59 · 109 阅读 · 0 评论 -
D20:C#设计模式之十九策略模式(Stragety Pattern)【行为型】
一、引言 今天我们开始讲“行为型”设计模式的第八个模式,该模式是【职责链模式】,英文名称是:Chain of Responsibility Pattern。让我们看看现实生活中的例子吧,理解起来可能更容易。我们看看某公司的采购流程吧。某公司的规章制度规定,采购原材料的总价在5万之内,只需要经理级别的人批准即可,采购总价大于5万小于10万的则需要财务经理进行批准,总价大于10万小于30万的需要...原创 2019-09-12 15:56:35 · 158 阅读 · 0 评论 -
D21:C#设计模式之二十职责链模式(Chain of Responsibility Pattern)【行为型】
一、引言 今天我们开始讲“行为型”设计模式的第八个模式,该模式是【职责链模式】,英文名称是:Chain of Responsibility Pattern。让我们看看现实生活中的例子吧,理解起来可能更容易。我们看看某公司的采购流程吧。某公司的规章制度规定,采购原材料的总价在5万之内,只需要经理级别的人批准即可,采购总价大于5万小于10万的则需要财务经理进行批准,总价大于10万小于30万的需要...原创 2019-09-12 15:57:22 · 176 阅读 · 0 评论 -
D22:C#设计模式之二十一访问者模式(Visitor Pattern)【行为型】
一、引言 今天我们开始讲“行为型”设计模式的第九个模式,该模式是【访问者模式】,英文名称是:Visitor Pattern。如果按老规矩,先从名称上来看看这个模式,我根本不能获得任何对理解该模式有用的信息,而且这个模式在我们的编码生活中使用的并不是很多。该模式的意图定义很抽象,第一次看了这个定义其实和没看没有什么区别,一头雾水,为了让大家更好的理解该模式的初衷,我们举个例子来说明模式。比如:...原创 2019-09-12 15:58:50 · 191 阅读 · 0 评论 -
D23:C#设计模式之二十二备忘录模式(Memento Pattern)【行为型】
一、引言 今天我们开始讲“行为型”设计模式的第十个模式,该模式是【备忘录模式】,英文名称是:Memento Pattern。按老规矩,先从名称上来看看这个模式,个人的最初理解就是对某个对象的状态进行保存,等到需要恢复的时候,可以从备忘录中进行恢复。生活中这样的例子也能经常看到,如备份电话通讯录,备份操作操作系统,备份数据库等。如果我们想恢复对象的状态,那么我们可能首先想到的是把对象保存下来,...原创 2019-09-12 15:59:24 · 292 阅读 · 0 评论 -
D24:C#设计模式之二十三解释器模式(Interpreter Pattern)【行为型】
一、引言 今天我们开始讲“行为型”设计模式的第十一个模式,也是面向对象设计模式的最后一个模式,先要说明一下,其实这个模式不是最后一个模式(按Gof的排序来讲),为什么把它放在最后呢?因为我们在业务系统中写一个解释器的机会并不是很多,实践比较少,理解和应用该模式就有些困难,所以就放在最后来说。该模式就是【解释器模式】,英文名称是:Interpreter Pattern。按老规矩,先从名称上来看...原创 2019-09-12 16:00:03 · 282 阅读 · 0 评论