上一页 1 2 3 4 5 6 7 8 ··· 12 下一页
摘要: 策略模式(Strategy):定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的用户。 //策略类,定义所有支持的算法的公共接口 public abstract class Strategy { //算法方法。 public abstract void A 阅读全文
posted @ 2019-11-06 16:00 水墨晨诗 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态了。 将要保存的细节封装在Memento中,哪天要更改保存的细节也不影响客户端。Memento模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属 阅读全文
posted @ 2019-11-06 14:18 水墨晨诗 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 将一个系统分割成多个对象可以增加复用性,但是对象之间相互连接的激增又会降低其可复用性。 大量的连接使得一个对象不可能在没有其他对象的支持下工作,系统表现为一个不可分割的的整体。所以,对系统的行为进行任何较大的改动就十分困难。 中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各个不需要显式地 阅读全文
posted @ 2019-10-31 14:43 水墨晨诗 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 状态模式(State)主要是解决当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。(如果状态判断很简单,就没必要使用状态模式了。) 将特定的状态相关的行为都放入到一个对象中,由于所有与状态相关的代码都存在于某个Concre 阅读全文
posted @ 2019-10-30 14:00 水墨晨诗 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 观察者模式:解决一个对象的某个事件在发生后,触发一系列其他对象的动作。并且不希望对象之间存在紧密的依赖关系。 static void Main(string[] args) { Chicken ck = new Chicken(); ck.Woo();//没使用观察者模式的方法。 } public 阅读全文
posted @ 2019-10-30 11:38 水墨晨诗 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪一个,我们只需在程序运行时指定具体的接收者即可,此时可以使用命令模式,来进行设计。命令模式使得请求发送者与请求者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦。在命令模式中,会将一个请求封 阅读全文
posted @ 2019-10-29 22:17 水墨晨诗 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 命令模式:将一个请求封装成为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。 命令模式的优点: 1、能够较为容易的设计一个命令队列。 2、在需要的情况下,可以较为容易的将命令记入日志。 3、允许接受请求的一方决定是否要否决请求。 4、可以容易地实现对 阅读全文
posted @ 2019-10-15 09:46 水墨晨诗 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 1、外观模式对外屏蔽了子系统的细节,因此外观模式降低了客户端对子系统使用的复杂性。 2、外观模式对客户端与子系统的耦合关系,让子系统内部的模块更容易维护和拓展。 3、通过合理的使用外观模式,可以帮我们更好的划分访问的层次。 4、当系统需要进行分层设计时,可以考虑使用Facade模式。 5、在维护一个 阅读全文
posted @ 2019-10-06 11:33 水墨晨诗 阅读(311) 评论(1) 推荐(0) 编辑
摘要: 在模板方法模式(Template Method)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。 介绍 意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法 阅读全文
posted @ 2019-10-05 17:02 水墨晨诗 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 意图:为其他对象提供一种代理以控制对这个对象的访问。 主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的 阅读全文
posted @ 2019-10-05 16:57 水墨晨诗 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 享元模式 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。 意图:运用共享技术有效地支持大量细粒度的对象。 主要解决:在有大量对象时,有可能会造成内存溢出,我们 阅读全文
posted @ 2019-10-02 21:42 水墨晨诗 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 组合模式又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。 组合模式依据树形结构来组合对象,用来表示部分以及整体的层次。 组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象。 阅读全文
posted @ 2019-09-27 16:00 水墨晨诗 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 装饰器模式(Decorator):可以在程序运行中,为对象动态的增加功能(不修改业务类,可以随意的添加功能,还可以随意调整顺序)。(组合+继承。两种方式的结合) static void Main(string[] args) { AbstractStudent student = new Commo 阅读全文
posted @ 2019-09-27 15:41 水墨晨诗 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 对象的继承关系是在编译的时候就定义好的,所以无法在运行时改变从父类集成的实现。子类的实现与它的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类的时候,如果继承下来的实现并不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最 阅读全文
posted @ 2019-09-26 17:00 水墨晨诗 阅读(145) 评论(1) 推荐(0) 编辑
摘要: 将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 新类继承了RedisHelper,但是如果RedisHelper中有我们不想要的方法,也必须继承。此处RedisHelper是接口。 阅读全文
posted @ 2019-09-26 11:46 水墨晨诗 阅读(170) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 12 下一页