随笔分类 -  【设计模式】

24种设计模式,使用JAVA语言描述
【设计模式】
摘要:设计模式是一套反复被使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使得代码编写工程化,是软件工程的基石。设计模式的设计需要满足以下六个原则: (1)开闭原则(Open Close Principle):对扩展开放 阅读全文

posted @ 2016-12-22 14:55 ITGungnir 阅读(183) 评论(0) 推荐(0) 编辑

【设计模式 - 24】之访问者模式(Visitor)
摘要:1、模式简介 访问者模式的定义: 访问者模式将数据结构与数据操作进行了分离,解决了稳定的数据结构和易变的数据操作的耦合问题。 访问者模式的优点: 符合单一职责原则; 优秀的扩展性; 灵活性。 访问者模式的缺点: 具体元素对访问者公布细节,违反了迪米特原则; 具体元素变更比较困难; 违反了依赖倒置原则 阅读全文

posted @ 2016-12-22 14:49 ITGungnir 阅读(199) 评论(0) 推荐(0) 编辑

【设计模式 - 23】之模版方法模式(Template)
摘要:1、模式简介 模版方法模式的定义: 模版方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 模版方法模式的优点: 封装不变部分,扩展可变部分; 提取公共代码,便于维护; 行为由父类控制,子类实现。 模版方法模式的 阅读全文

posted @ 2016-12-22 14:48 ITGungnir 阅读(185) 评论(0) 推荐(0) 编辑

【设计模式 - 22】之策略模式(Strategy)
摘要:1 模式简介 在策略模式中,一个类的行为或其算法可以在运行时改变。策略模式定义了一系列算法,把它们一个个封装起来,并且使它们可以互相替换。 策略模式的优点: 算法可以自由切换; 避免使用多重条件判断; 扩展性良好。 策略模式的缺点: 算法可以自由切换; 避免使用多重条件判断; 扩展性良好。 策略模式 阅读全文

posted @ 2016-12-22 14:47 ITGungnir 阅读(272) 评论(0) 推荐(0) 编辑

【设计模式 - 21】之空对象模式(Null Object)
摘要:1、模式简介 在空对象模式中,一个空对象取代NULL对象的实例的检查。NULL对象不是检查空值,而是反映一个不做任何动作的关系。这样的NULL对象也可以在数据不可用的时候提供默认的行为。 在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象 阅读全文

posted @ 2016-12-22 14:46 ITGungnir 阅读(239) 评论(0) 推荐(0) 编辑

【设计模式 - 20】之状态模式(State)
摘要:1、模式简介 状态模式的定义: 状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。这个模式将状态封装成独立的类,并将动作委托到代表当前状态的类的对象。 状态模式的优点: 封装了转换规则; 枚举可能的状态,在枚举状态之前需要确定状态种类; 将所有与某个状态有关的行为放到一个类中 阅读全文

posted @ 2016-12-22 14:45 ITGungnir 阅读(223) 评论(0) 推荐(0) 编辑

【设计模式 - 19】之观察者模式(Observer)
摘要:1、模式简介 观察者模式的介绍: 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象的状态发生改变时,它的所有依赖者都会收到通知并自动更新。 发布者(被观察者) + 订阅者(观察者) = 观察者模式 观察者模式的优点: 观察者和被观察者是抽象耦合的; 观察者模式建立了一套触发机制(触发联动) 阅读全文

posted @ 2016-12-22 14:43 ITGungnir 阅读(337) 评论(0) 推荐(0) 编辑

【设计模式 - 18】之备忘录模式(Memento)
摘要:1、模式简介 备忘录模式的定义: 备忘录模式保存一个对象的某个状态,以便在适当的时候恢复对象,用作“后悔药”,即取消上次操作或返回到以前的某个版本。 备忘录模式的应用实例: Windows系统中的Ctrl+Z; 浏览器等软件中的后退按钮功能; 数据库的事务管理及回滚功能; 游戏存档。 备忘录模式的优 阅读全文

posted @ 2016-12-22 14:41 ITGungnir 阅读(219) 评论(0) 推荐(0) 编辑

【设计模式 - 17】之中介者模式(Mediator)
摘要:1、模式简介 中介者模式的定义: 用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显式地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。 中介者模式中的组成部分: 同事类:如果两个类对象之间可以彼此影响,则称这两个类为同事类; 中介者:中介者中有所有同事类的引用,定义了各个同事 阅读全文

posted @ 2016-12-22 14:40 ITGungnir 阅读(197) 评论(0) 推荐(0) 编辑

【设计模式 - 16】之迭代器模式(Iterator)
摘要:1、模式简介 迭代器模式是JAVA中非常常用的模式,List、Map、Set等常见集合中都封装了迭代器Iterator。 迭代器模式的介绍: 迭代器模式用于顺序访问集合对象中的元素,而不需要知道集合对象的底层表示,即可以将在元素之间游走的责任交给迭代器,而不是集合对象本身。 迭代器模式的优点: 它支 阅读全文

posted @ 2016-12-22 14:39 ITGungnir 阅读(184) 评论(0) 推荐(0) 编辑

【设计模式 - 15】之解释器模式(Interpreter)
摘要:1、模式简介 解释器模式允许我们自定义一种语言,并定义一个这种语言的解释器,这个解释器用来解释语言中的句子。由于这种模式主要用于编译器的编写,因此在日常应用中不是很常用。 如果一种特定类型的问题发生频率足够高,那么可能就值得将该问题的各个实例表述为一种简单语言中的一个句子,这样就可以构建一个解释器, 阅读全文

posted @ 2016-12-22 14:37 ITGungnir 阅读(241) 评论(0) 推荐(0) 编辑

【设计模式 - 14】之命令模式(Command)
摘要:1、模式简介 命令模式的定义: 命令模式将命令封装成对象,从而使调用一个命令变为调用一个对象的指定方法。 命令模式的优点: 降低了系统耦合度; 新的命令可以很容易的添加到系统中去。 命令模式的缺点: 会导致系统中有过多的具体命令类。 2、案例 在一个系统中有三种命令:点击按钮、加载图片和访问网络。我 阅读全文

posted @ 2016-12-22 14:36 ITGungnir 阅读(176) 评论(0) 推荐(0) 编辑

【设计模式 - 13】之责任链模式(Chain Of Responsibility)
摘要:1、模式简介 责任链模式的简介: 责任链模式为请求创建了一个接收者对象的链,每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。 责任链模式避免了请求的发送者和接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连成一条链,并且沿着这 阅读全文

posted @ 2016-12-22 14:35 ITGungnir 阅读(217) 评论(0) 推荐(0) 编辑

【设计模式 - 12】之代理模式(Proxy)
摘要:1、模式简介 代理模式的简介: 为其他对象提供一种代理以控制对这个对象的访问。代理对象起到中介作用,可以去掉功能服务或增加额外服务。 常见的代理模式: 远程代理:可以隐藏一个对象存在于不同控件的事实,也使得客户端可以访问在远程机器上的对象,远程机器可能具有更好的计算性能与处理速度,可以快速响应并处理 阅读全文

posted @ 2016-12-22 14:34 ITGungnir 阅读(270) 评论(0) 推荐(0) 编辑

【设计模式 - 11】之享元模式(FlyWeight)
摘要:1、模式简介 当系统中存在大量对象时,非常容易造成内存溢出。为了解决这个问题,我们把这些对象中共有的部分抽象出来,如果有相同的业务请求,则直接返回在内存中已有的对象,避免重新创建,这就是享元模式。 享元模式(FlyweightPattern)主要用于减少创建对象的数量,以减少内存占用和提高性能,即它 阅读全文

posted @ 2016-12-22 14:32 ITGungnir 阅读(187) 评论(0) 推荐(0) 编辑

【设计模式 - 10】之外观模式(Facade)
摘要:1、模式简介 外观模式隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。外观模式往往涉及到一个类,这个类提供了客户端请求的简化方法和对现有系统类方法的委托调用。外观模式使得系统中的子系统更加容易使用。 外观模式主要是为了降低访问复杂系统的内部子系统的复杂度,简化客户端与之的接口。 外观模式 阅读全文

posted @ 2016-12-22 14:31 ITGungnir 阅读(203) 评论(0) 推荐(0) 编辑

【设计模式 - 9】之装饰者模式(Decorator)
摘要:1、模式简介 装饰者模式允许向一个现有的对象添加新的功能,同时又不改变其结构。 装饰者模式的思路是用“调料”对象将原始对象进行层层包裹,同时其属性、动作层层传递,达到最终的扩展效果。因此,要求原始对象和“调料”对象继承同一个类或实现同一个接口,这样才能在装饰完成后调用原始对象的属性或动作。 装饰者模 阅读全文

posted @ 2016-12-22 14:30 ITGungnir 阅读(216) 评论(0) 推荐(0) 编辑

【设计模式 - 8】之组合模式(Composite)
摘要:1、模式简介 组合模式可以将对象以树形结构来表现“整体/部分”层次结构,让客户以一致的方式处理个别形象以及对象组合。 组合模式让我们能用树形方式创建对象的结构,树里面包含了组合以及个别的对象。使用组合模式,我们能把相同的操作应用在组合的个别对象上,换句话说,我们可以忽略对象组合的个别对象之间的差别。 阅读全文

posted @ 2016-12-22 14:29 ITGungnir 阅读(180) 评论(0) 推荐(0) 编辑

【设计模式 - 7】之过滤器模式(Filter)
摘要:1、模式简介 过滤器模式(Filter)也叫标准模式(Criteria),这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。 2、实例 这个实例的需求如下: Person类有三个属性:姓名(Name)、性别(Gender)和婚姻情况(Marital),我们的系 阅读全文

posted @ 2016-12-22 14:28 ITGungnir 阅读(2805) 评论(0) 推荐(0) 编辑

【设计模式 - 6】之桥接模式(Bridge)
摘要:1、模式简介 举个例子,人、车和公路是三个维度,人开着车在公路上行驶,就是将这三个维度进行了关联。人分男人(Man)和女人(Woman),车分小轿车(Car)和公共汽车(Bus),公路分市区公路(Street)和高速公路(Speedway),那么如果我们不使用桥接模式的话,要模拟出所有情况,系统的架 阅读全文

posted @ 2016-12-22 14:26 ITGungnir 阅读(315) 评论(0) 推荐(0) 编辑

导航

点击右上角即可分享
微信分享提示