随笔分类 -  01-C# / 10-设计模式

摘要:一、引言 今天我们要讲行为型设计模式的第十一个模式--解释器模式,也是面向对象设计模式的最后一个模式。先要说明一下,其实这个模式不是最后一个模式(按Gof的排序来讲),为什么把它放在最后呢?因为我们在业务系统中写一个解释器的机会并不是很多,实践比较少,理解和应用该模式就有些困难,所以就放在最后来说, 阅读全文
posted @ 2020-02-23 23:41 缥缈的尘埃 阅读(680) 评论(0) 推荐(1) 编辑
摘要:一、引言 今天我们要讲行为型设计模式的第十个模式--备忘录模式,先从名称上来看。备忘录模式可以理解为对某个对象的状态进行保存,等到需要恢复的时候,可以从备忘录中进行恢复。生活中这样的例子也能经常看到,如备份电话通讯录、操作系统、数据库等。如果我们想恢复对象的状态,那么我们可能首先想到的是把对象保存下 阅读全文
posted @ 2020-02-22 15:35 缥缈的尘埃 阅读(535) 评论(0) 推荐(1) 编辑
摘要:一、引言 今天我们要讲行为型设计模式的第九个模式--访问者模式。如果按老规矩,先从名称上来看这个模式,我根本不能获得任何对理解该模式有用的信息,而且这个模式在我们的编码生活中使用的并不是很多。该模式的意图定义很抽象,第一次看了这个定义其实和没看没有什么区别,一头雾水。为了让大家更好的理解该模式的初衷 阅读全文
posted @ 2020-02-22 11:18 缥缈的尘埃 阅读(454) 评论(0) 推荐(1) 编辑
摘要:一、引言 今天我们要讲行为型设计模式的第八个模式--职责链模式。让我们看看现实生活中某公司采购流程的例子吧,理解起来可能更容易。某公司的规章制度规定,采购原材料的总价在5万之内,只需要经理级别的人批准即可;采购总价大于5万小于10万的则需要财务经理进行批准;总价大于10万小于30万的需要总经理批准; 阅读全文
posted @ 2020-02-21 17:04 缥缈的尘埃 阅读(449) 评论(0) 推荐(2) 编辑
摘要:一、引言 今天我们要讲行为型设计模式的第七个模式--策略模式。在现实生活中,策略模式的例子也非常常见,例如:在一个公司中,会有各种工作人员:有普通员工、有软件架构师、有部门经理,当然也有公司的CEO等等。这些工作人员负责的工作不同、担负的职责也不同,报酬也各不相同。 每种工作人员都有自己的工资,但是 阅读全文
posted @ 2020-02-21 15:13 缥缈的尘埃 阅读(860) 评论(0) 推荐(3) 编辑
摘要:一、引言 今天我们要讲行为型设计模式的第六个模式--状态模式。无论是现实世界,还是面向对象的OO世界,里面都有一个东西,那就是对象。有对象当然就有状态了。每个对象都有其对应的状态,而每个状态又有对应一些相应的行为。在不同状态下,行为的的方式也是不一样。如果某个对象有多个状态时,那么就会有很多对应的行 阅读全文
posted @ 2020-02-21 12:04 缥缈的尘埃 阅读(533) 评论(0) 推荐(2) 编辑
摘要:一、引言 今天我们要讲行为型设计模式的第五个模式--中介者模式,先从名字上来看。中介者模式可以理解为在两个或多个对象中间增加一个“中间对象”,由增加的“中间对象”协调它们之间的关系。中介者模式在现实生活中的例子很多,比如:A和B做生意,如果A和B是一次性买卖,没有讨价还价的过程,但是A或者B的想法经 阅读全文
posted @ 2020-02-21 09:37 缥缈的尘埃 阅读(458) 评论(0) 推荐(2) 编辑
摘要:一、引言 今天我们要讲行为型设计模式的第四个模式--观察者模式,先从名字上来看。观察者模式可以理解为既然有“观察者”,那肯定就有“被观察者”了。“观察者”监视着“被观察者”,如果“被观察者”有所行动,“观察者”就会做出相应的动作来回应。听起来是不是有点像“谍战”的味道?比如“谍影重重”那类优秀的影片 阅读全文
posted @ 2020-02-20 14:27 缥缈的尘埃 阅读(566) 评论(0) 推荐(0) 编辑
摘要:一、引言 今天我们要讲行为型设计模式的第三个模式--迭代器模式,先从名字上来看。迭代是遍历的意思,迭代器可以理解为是遍历某某的工具,遍历什么呢?在软件设计中,当然遍历的是集合对象,所以说迭代器模式是遍历集合的一种通用的算法。如果集合只有一种类型,那这个模式就没用了,就是因为集合对象包含数组、列表、字 阅读全文
posted @ 2020-02-20 11:12 缥缈的尘埃 阅读(537) 评论(0) 推荐(0) 编辑
摘要:一、引言 今天我们要讲行为型设计模式的第二个模式--命令模式,又称为行动(Action)模式或交易(Transaction)模式,先从名字上来看。“命令模式”理解为一种行为或者一个操作就是一个命令。“命令”这个词语在军队里面用的最多,比如:下达作战命令,接下来就是上战场玩命了。基于这些,命令就是任务 阅读全文
posted @ 2020-02-19 17:44 缥缈的尘埃 阅读(520) 评论(0) 推荐(0) 编辑
摘要:一、引言 今天我们要讲行为型设计模式的第一个模式--模板方法模式,先从名字上来看。“模板方法”理解为有一个方法的名字叫“模板方法”,也可以换个理解方法:有一个方法包含了一个模板,这个模板是一个算法。在我们的现实生活中有很多例子可以说明这个模式,就拿吃饺子这个事情来说,要想吃到饺子必须经过三步:第一步 阅读全文
posted @ 2020-02-19 16:14 缥缈的尘埃 阅读(559) 评论(0) 推荐(1) 编辑
摘要:一、引言 今天我们要讲结构型设计模式的第七个模式,也是结构型设计模式中的最后一个模式--代理模式。先从名字上来看,“代理”可以理解为“代替”,代替“主人”做一些事情。为什么需要“代理”?是因为某些原因(比如:安全方面的原因),不想让“主人”直接面对这些繁琐、复杂的问题,但是这些事情是经“主人”同意或 阅读全文
posted @ 2020-02-19 14:51 缥缈的尘埃 阅读(526) 评论(0) 推荐(0) 编辑
摘要:一、引言 今天我们要讲结构型设计模式的第六个模式--享元模式,先从名字上来看,“享元”可以这样理解--共享“单元”。单元是什么呢?举例说明:对于图形而言就是图元;对于英文来说就只26个英文字母;对于汉语来说就是每个汉字。也可以这样理解“元”--构成事物的最小单元,这些单元如果大量且重复出现,我们可以 阅读全文
posted @ 2020-02-19 11:58 缥缈的尘埃 阅读(596) 评论(0) 推荐(0) 编辑
摘要:一、引言 今天我们要讲结构型设计模式的第五个模式--外观模式。先从名字上来理解一下外观模式,当看到“外观”这个词时,很容易想到“外表”这个词语,两者有着很相近的意思。就拿谈恋爱来说,“外表”很重要,如果第一眼看着很舒服、有眼缘,那就有交往下去的可能。如果长得“三寸钉、枯树皮”,估计就够呛了。在这方面 阅读全文
posted @ 2020-02-18 17:25 缥缈的尘埃 阅读(510) 评论(0) 推荐(0) 编辑
摘要:一、引言 今天我们要讲结构型设计模式的第四个模式--组合模式。当我们谈到这个模式的时候,有一个物件和这个模式很像,那就是“俄罗斯套娃”。“俄罗斯套娃”是大的瓷器娃娃里面装着一个小的瓷器娃娃,小的瓷器娃娃里面再装着更小的瓷器娃娃,直到最后一个不能再装更小的瓷器娃娃的那个瓷器娃娃为止。在我们的操作系统中 阅读全文
posted @ 2020-02-18 15:50 缥缈的尘埃 阅读(628) 评论(0) 推荐(0) 编辑
摘要:一、引言 今天我们要讲结构型设计模式的第三个模式--装饰模式。当第一次看到这个名称时想到的是另外一个词语“装修”,个人观点谈谈对“装修”的理解吧,请大家看清楚现在说是“装修”而不是“装饰”。当我们长大了就要准备结婚(男大当婚女大当嫁嘛),而结婚往往涉及到要买房的事。如果买的是毛坯房,假如想要房子的内 阅读全文
posted @ 2020-01-20 18:30 缥缈的尘埃 阅读(715) 评论(0) 推荐(1) 编辑
摘要:一、引言 今天我们要讲结构型设计模式的第二个模式--桥接模式,也有叫桥模式的。桥在我们现实生活中经常是连接着A地和B地,再往后来发展,桥引申为一种纽带,比如,丝绸之路是连接亚洲和欧洲的桥梁。有了桥,我们出行更方便了,不需要绕路或搭船。针对桥的使用环境来说,桥解决了跨越和衔接的问题。在设计模式中的桥接 阅读全文
posted @ 2020-01-19 16:24 缥缈的尘埃 阅读(667) 评论(0) 推荐(0) 编辑
摘要:一、引言 从今天开始我们开始讲结构型设计模式,结构型设计模式有如下几种:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 创建型设计模式解决的是对象创建的问题,而结构型设计模式解决的是类和对象组合关系的问题。 今天我们开始讲结构型设计模式里面的第一个设计模式:适配器模式。适配 阅读全文
posted @ 2020-01-18 16:22 缥缈的尘埃 阅读(765) 评论(0) 推荐(0) 编辑
摘要:一、引言 很多人说原型设计模式会节省机器内存,他们说是拷贝出来的对象是原型的复制,不会使用内存。我认为这是不对的,因为拷贝出来的每一个对象都是实际存在的,每个对象都有自己独立的内存地址且会被GC回收。如果就浅拷贝来说,可能会公用一些字段(引用类型),但深拷贝是不会的。所以说原型设计模式会提高内存使用 阅读全文
posted @ 2020-01-16 12:01 缥缈的尘埃 阅读(650) 评论(0) 推荐(0) 编辑
摘要:一、引言 在现实生活中,我们经常会遇到一些构成比较复杂的物品。比如电脑,是由CPU、主板、内存条、硬盘、显卡、机箱等组装而成的。手机也是复杂物品,由主板、各种芯片、RAM、ROM、摄像头等部件组成。但是无论是电脑还是手机,它们的组装过程是固定的。拿手机来说,组装流水线是固定的、不变的,但是把不同的主 阅读全文
posted @ 2020-01-14 16:21 缥缈的尘埃 阅读(994) 评论(0) 推荐(0) 编辑