
【设计模式】
ITGungnir
GUTS OVER FEAR
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【设计模式 - 1】之工厂模式(Factory)
1 模式简介1.1 工厂模式作用l 工厂模式解决的是“使用new关键字获取对象造成松耦合”的问题。l 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 1.2 工厂模式分类1.2.1 分类工厂模式可以分为三类:l 简单工厂模式(SimpleFactory)l 工厂方法模式(Fact原创 2016-12-10 16:45:50 · 492 阅读 · 0 评论 -
【设计模式 - 15】之解释器模式(Interpreter)
1 模式简介解释器模式允许我们自定义一种语言,并定义一个这种语言的解释器,这个解释器用来解释语言中的句子。由于这种模式主要用于编译器的编写,因此在日常应用中不是很常用。 如果一种特定类型的问题发生频率足够高,那么可能就值得将该问题的各个实例表述为一种简单语言中的一个句子,这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。 解释器模式的优点:1)原创 2016-12-11 09:49:14 · 451 阅读 · 0 评论 -
【设计模式 - 16】之迭代器模式(Iterator)
1 模式简介迭代器模式是JAVA中非常常用的模式,List、Map、Set等常见集合中都封装了迭代器Iterator。 迭代器模式的介绍:迭代器模式用于顺序访问集合对象中的元素,而不需要知道集合对象的底层表示,即可以将在元素之间游走的责任交给迭代器,而不是集合对象本身。 迭代器模式的优点:1) 它支持以不同的方式遍历一个聚合对象;2)原创 2016-12-11 09:57:38 · 634 阅读 · 0 评论 -
【设计模式 - 17】之中介者模式(Mediator)
1 模式简介中介者模式的定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显式地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。 中介者模式中的组成部分:1. 同事类:如果两个类对象之间可以彼此影响,则称这两个类为同事类;2. 中介者:中介者中有所有同事类的引用,定义了各个同事类之间交互的抽象方法。 中原创 2016-12-11 10:10:46 · 512 阅读 · 0 评论 -
【设计模式 - 18】之备忘录模式(Memento)
1 模式简介备忘录模式的定义:备忘录模式保存一个对象的某个状态,以便在适当的时候恢复对象,用作“后悔药”,即取消上次操作或返回到以前的某个版本。 备忘录模式的应用实例:1) Windows系统中的Ctrl+Z;2) 浏览器等软件中的后退按钮功能;3) 数据库的事务管理及回滚功能;4) 游戏存档。原创 2016-12-11 10:17:38 · 555 阅读 · 0 评论 -
【设计模式 - 19】之观察者模式(Observer)
1 模式简介观察者模式的介绍:观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象的状态发生改变时,它的所有依赖者都会收到通知并自动更新。 发布者(被观察者) + 订阅者(观察者) = 观察者模式 观察者模式的优点:1) 观察者和被观察者是抽象耦合的;2) 观察者模式建立了一套触发机制(触发联动)。 观察者模式的缺原创 2016-12-11 10:33:09 · 687 阅读 · 0 评论 -
【设计模式 - 20】之状态模式(State)
1 模式简介状态模式的定义:状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。这个模式将状态封装成独立的类,并将动作委托到代表当前状态的类的对象。 状态模式的优点:1) 封装了转换规则;2) 枚举可能的状态,在枚举状态之前需要确定状态种类;3) 将所有与某个状态有关的行为放到一个类中,并且可以方原创 2016-12-11 10:43:07 · 698 阅读 · 0 评论 -
【设计模式 - 21】之空对象模式(Null Object)
1 模式简介在空对象模式中,一个空对象取代NULL对象的实例的检查。NULL对象不是检查空值,而是反映一个不做任何动作的关系。这样的NULL对象也可以在数据不可用的时候提供默认的行为。 在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。 空对象模式一般和策略模原创 2016-12-11 10:49:30 · 571 阅读 · 0 评论 -
【设计模式 - 22】之策略模式(Strategy)
1 模式简介在策略模式中,一个类的行为或其算法可以在运行时改变。策略模式定义了一系列算法,把它们一个个封装起来,并且使它们可以互相替换。 策略模式的优点:1) 算法可以自由切换;2) 避免使用多重条件判断;3) 扩展性良好。 策略模式的缺点:1) 算法可以自由切换;2) 避免使用原创 2016-12-11 11:03:00 · 513 阅读 · 0 评论 -
【设计模式 - 23】之模版方法模式(Template)
1 模式简介模版方法模式的定义:模版方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模版方法模式的优点:1) 封装不变部分,扩展可变部分;2) 提取公共代码,便于维护;3) 行为由父类控制,子类实现。 模版方法模式的缺点原创 2016-12-11 11:09:30 · 484 阅读 · 0 评论 -
【设计模式 - 24】之访问者模式(Visitor)
1 模式简介访问者模式的定义:访问者模式将数据结构与数据操作进行了分离,解决了稳定的数据结构和易变的数据操作的耦合问题。 访问者模式的优点:1) 符合单一职责原则;2) 优秀的扩展性;3) 灵活性。 访问者模式的缺点:1) 具体元素对访问者公布细节,违反了迪米特原则;2) 具原创 2016-12-11 11:47:56 · 360 阅读 · 0 评论 -
【设计模式 - 14】之命令模式(Command)
1 模式简介命令模式的定义:命令模式将命令封装成对象,从而使调用一个命令变为调用一个对象的指定方法。 命令模式的优点:1) 降低了系统耦合度;2) 新的命令可以很容易的添加到系统中去。 命令模式的缺点:会导致系统中有过多的具体命令类。 2 案例在一个系统中有三种命令:点击按钮、加载图片和访问网络。原创 2016-12-11 09:40:55 · 411 阅读 · 0 评论 -
【设计模式 - 13】之责任链模式(Chain Of Responsibility)
1 模式简介责任链模式的简介:1. 责任链模式为请求创建了一个接收者对象的链,每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。2. 责任链模式避免了请求的发送者和接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连成一条链,并且沿着这条链传递请求,直到有对象处理它为止。3.原创 2016-12-11 09:30:29 · 644 阅读 · 0 评论 -
【设计模式 - 12】之代理模式(Proxy)
1 模式简介1.1 定义为其他对象提供一种代理以控制对这个对象的访问。代理对象起到中介作用,可以去掉功能服务或增加额外服务。 1.2 常见的代理模式1) 远程代理:可以隐藏一个对象存在于不同控件的事实,也使得客户端可以访问在远程机器上的对象,远程机器可能具有更好的计算性能与处理速度,可以快速响应并处理客户端请求;2) 虚拟代原创 2016-12-11 09:23:12 · 515 阅读 · 0 评论 -
【设计模式 - 2】之单例模式(Singleton)
1 模式简介单例模式在代码中是非常常用的,如线程池、数据库连接、注册表、共享资源、一些非常消耗资源的组件,等等。 单例模式主要解决如下问题:l 确保一个特殊类的实例是独一无二的;l 确保这个类的实例非常容易访问(提供了这个类的一个全局访问指针); 也就是说,在以下情况下可以使用单例模式:l 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时原创 2016-12-10 16:55:47 · 523 阅读 · 0 评论 -
【设计模式 - 3】之建造者模式(Builder)
1 模式简介建造者模式也叫生成器模式,和抽象工厂模式相似,也是一种构建复杂对象的模式。 建造者模式中的角色分类:l 抽象建造者Builder:接口类型,用于规范各个产品的组成部分;l 具体建造者ConcreteBuilder:实现Builder中的所有方法,并且返回一个构造好的产品实例;l 指导者Director:根据用户的需求安排产品各组件的生产顺序,然后原创 2016-12-10 17:03:23 · 446 阅读 · 0 评论 -
【设计模式 - 4】之原型模式(Prototype)
1 模式简介原型模式的定义:通过复制一个现有的对象(原型)来得到一个相似的对象。 原型模式的UML图如下图所示:从上图中可以看到,所有的对象实体类都是继承自一个Prototype的父类,而prototype类有一个可以复制对象的方法clone(),可以复制其任意子类。这样,所有Prototype类的子类在整个程序中只需要new一次,其他情况下只需要从这几个类中原创 2016-12-10 17:43:05 · 527 阅读 · 0 评论 -
【设计模式 - 5】之适配器模式(Adapter)
1 模式简介适配器模式解决的问题:让原本因为接口不兼容而不能一起工作的类可以一起工作。 适配器模式的UML原理图如下图所示:从上图可见,客户想要用Target接口实现Adaptee接口中的方法,但这显然是不可能的。因此,我们需要定义一个适配器类Adapter,让它在Target和Adaptee之间做一个“调停者”,进而达到Target和Adaptee的适配。原创 2016-12-11 08:11:56 · 575 阅读 · 0 评论 -
【设计模式 - 6】之桥接模式(Bridge)
1 模式简介举个例子,人、车和公路是三个维度,人开着车在公路上行驶,就是将这三个维度进行了关联。人分男人(Man)和女人(Woman),车分小轿车(Car)和公共汽车(Bus),公路分市区公路(Street)和高速公路(Speedway),那么如果我们不使用桥接模式的话,要模拟出所有情况,系统的架构应该是如下图所示的:从图中可以很容易的看出,这个系统中的类太多了,需要原创 2016-12-11 08:21:13 · 925 阅读 · 0 评论 -
【设计模式 - 7】之过滤器模式(Filter)
1 模式简介过滤器模式(Filter)也叫标准模式(Criteria),这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。 2 实例需求:Person类有三个属性:姓名(Name)、性别(Gender)和婚姻情况(Marital),我们的系统中的一些功能需要对这些属性进行筛选,比如:1) 得到所有的男原创 2016-12-11 08:26:38 · 5108 阅读 · 1 评论 -
【设计模式 - 8】之组合模式(Composite)
1 模式简介组合模式可以将对象以树形结构来表现“整体/部分”层次结构,让客户以一致的方式处理个别形象以及对象组合。 组合模式让我们能用树形方式创建对象的结构,树里面包含了组合以及个别的对象。使用组合模式,我们能把相同的操作应用在组合的个别对象上,换句话说,我们可以忽略对象组合的个别对象之间的差别。 2 案例本例是模拟电脑中文件系统的层级结构。 我原创 2016-12-11 08:33:02 · 505 阅读 · 0 评论 -
【设计模式 - 9】之装饰者模式(Decorator)
1 模式简介装饰者模式允许向一个现有的对象添加新的功能,同时又不改变其结构。 装饰者模式的思路是用“调料”对象将原始对象进行层层包裹,同时其属性、动作层层传递,达到最终的扩展效果。因此,要求原始对象和“调料”对象继承同一个类或实现同一个接口,这样才能在装饰完成后调用原始对象的属性或动作。 装饰者模式的优点:1) 可以动态的扩展功能;2)原创 2016-12-11 08:57:55 · 445 阅读 · 0 评论 -
【设计模式 - 10】之外观模式(Facade)
1 模式简介外观模式隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。外观模式往往涉及到一个类,这个类提供了客户端请求的简化方法和对现有系统类方法的委托调用。外观模式使得系统中的子系统更加容易使用。 外观模式主要是为了降低访问复杂系统的内部子系统的复杂度,简化客户端与之的接口。 外观模式的核心是在客户端和复杂系统之间添加一层外观层,外观层将子模块的调用顺序、原创 2016-12-11 09:04:20 · 478 阅读 · 0 评论 -
【设计模式】
设计模式是一套反复被使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使得代码编写工程化,是软件工程的基石。设计模式的设计需要满足以下六个原则:(1)开闭原则(Open Close Principle):对扩展开放,对修改关闭。(2)里氏代换原则(Liskov Substitution Principle)原创 2016-12-12 12:37:30 · 503 阅读 · 0 评论