随笔分类 - 设计模式
摘要:一.介绍 解释器模式(Interpreter Pattern)。属于行为型模式。给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 二.实现 举个例子,有一个中英文翻译系统可以翻译一句英文的话,每个英文单词对应的是去翻译出中文,而标点符号输出的还是标点符
阅读全文
摘要:一.介绍 中介者模式(Mediator Pattern)。属于行为型模式。用一个中介对象来封装一序列的对象交互。中介者使得各对象之间不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 二.实现 举个例子,用户聊天,A用户发了消息,B用户就能收到。B用户发的消息,A用户可以收到
阅读全文
摘要:一.介绍 访问者模式(Visitor Pattern)。属于行为型模式。表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 二.实现 举个例子,如果有元素A、B类,想调用这些元素中的Print方法,很简单地,只要实例化去调用就可以。 publi
阅读全文
摘要:一.介绍 状态模式(State Pattern)。属于行为型模式。当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 二.实现 举个例子,用银行账户的状态来实现状态模式,状态分为两种,一种是正常有钱可以取的状态,一种是已经透支了不能再取钱的状态。每次存钱取钱都会刷新一下这个账户
阅读全文
摘要:一.介绍 备忘录模式(Memento Pattern)。属于行为型模式。它在不破坏封装性的前提下,捕捉一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。 二.实现 备忘录顾名思义就是可以存储多个信息的工具。在该模式下,如果一个对象出现了多种状态,通过管理者的集
阅读全文
摘要:一.介绍 命令模式(Command Pattern)。属于行为型模式。它将请求封装成一个对象,从而使你可以用不同的请求对客户端进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 二.实现 举个例子,老板想做一个系统,那老板的话就相当于一个命令,而这个命令又不可能直接说给员工(老板一般都是神
阅读全文
摘要:一.介绍 责任链模式(Chain of Responsibility Pattern)。属于行为型模式。它使多个对象都有机会处理请求,从而避免发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 二.实现 举个例子,在一所银行里,有几个级别的员工,柜
阅读全文
摘要:一.介绍 迭代模式(Iterator Pattern)。属于行为型模式。它提供一种方法顺序访问聚合对象中各个元素,而又不暴露该对象的内部表示。 二.实现 迭代模式是针对聚合对象使用的,一般使用聚合,有增删改操作,也需要进行遍历操作。如果聚合对象全实现这些功能,那根据单一职责原则,聚合对象就承担了太多
阅读全文
摘要:一.介绍 观察者模式(Observer Pattern)。属于行为型模式。它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 二.实现 举个例子,我们开车时,当踩油门加速的时候,显示器上会显示车速,而超速
阅读全文
摘要:一.介绍 模板方法模式(Template Pattern)。属于行为型模式。它定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 二.实现 一说到模板,就能想到这是个现有的,可以直接套用的东西。举个例子,我们去开车,不管开什么
阅读全文
摘要:一.介绍 策略模式(Stragety Pattern)。属于行为型模式。它定义了算法(行为)家族,分别封装起来,使得它们之间可以相互替换,此模型让算法(行为)的变化,不会影响到使用该算法(行为)的客户。 二.实现 举个例子,一辆车(Car类)里有轮胎(Tyre类)才能跑(Run),不同情况需要使用不
阅读全文
摘要:一.介绍 享元模式(Flyweight Pattern)。属于结构型模式。运用共享技术有效地支持大量细粒度的对象。 二.实现 当我们需要重复使用一个对象的时候,如果重复创建对象,会让内存消耗越来越大。能不能创建了第一次之后,如果需要再次使用,再直接使用之前已经创建的对象呢。让一个对象可以共享,享元模
阅读全文
摘要:一.介绍 组合模式(Composite Pattern)。属于结构型模式。将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。 二.实现 举个例子,我们写前端有用上html标签(抽象构件),这个标签分为双标签(树枝构件)和单标签(树叶构件),在写
阅读全文
摘要:一.介绍 桥接模式(Bridge Pattern)。属于结构型模式。将抽象部分与它的实现部分分离,使得它们可以独立地变化。 二.实现 举个例子,魔术师的法杖可以用口令施展法术攻击,有火法杖和冰法杖,法杖可以施展射击。法杖可以定为Wand抽象类,火法杖和冰法杖来继承抽象,这样火法杖和冰法杖就能实现射击
阅读全文
摘要:一.介绍 外观模式(Facade Pattern),也叫门面模式。属于结构型模式。为子系统中的一系列接口提供一个一致的界面,该模式提供了一个高层接口,这个接口使得这一子系统更加容易使用。 二.实现 外观模式是通过定义一个外观类将子类包装起来,来简化客户端所调用的方法。 /// <summary> /
阅读全文
摘要:一.介绍 代理模式(Proxy Pattern)。属于结构型模式。为其它对象提供一种代理以控制对该对象的访问。 二.实现 代理的概念很简单,就是想调用A类方法时,不直接调用,而是通过调用代理B类的方法,由B类方法去调用A类的方法。 /// <summary> /// 抽象主题角色 /// </sum
阅读全文
摘要:一.介绍 装饰者模式(Decorator Pattern)。属于结构型模式。动态地给一个对象添加额外的职责,就增加功能来说,装饰者模式比添加子类更为灵活。 二.实现 举个例子,定义一个类是一个人,那这个人能够打拳,一拳出来就可以造成物理伤害。后来这个人得到了一套外挂,用了外挂后,一拳出来不光可以造成
阅读全文
摘要:一.介绍 适配器模式(Adapter Pattern)。属于结构型模式。将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本因为接口不兼容而不能一起工作的那些类可以一起工作。 二.实现 客户调用Adaptee类的时候,希望Adaptee类可以提供一个指定名称的Request方法,而A
阅读全文
摘要:一.介绍 原型模式(Prototype Pattern)。属于创建型模式。用原型实例指向创建对象的种类,并且通过拷贝这些原型创建新的对象。 二.实现 简单来说,原型模式可以直接复制一个现有的对象,而不需要重新new操作去创建。这种创建分两种方式,浅拷贝和深拷贝。 1.浅拷贝 定义一个接口IPerso
阅读全文
摘要:一.介绍 建造者模式(Singleton Pattern)。属于创建型模式。将一个复杂对象的创建和它的表示分离,使得同样的构建过程可以创建不同的表示。 二.实现 举个例子,客户去买电脑,都是和电脑店的老板直接沟通的,然后老板再安排装机人员去安装电脑,最后安装完成就可以出货。这个流程符合用建造者模式去
阅读全文