设计模式
超级代码搬运工
计算机在读硕士,代码搬运工
展开
-
迭代器模式
迭代器模式: 提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示使用场景:当需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,你就应该考虑用迭代器模式。优点:迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可以让外部代码透明的访问及和内部的数据。原创 2016-03-01 21:21:14 · 342 阅读 · 0 评论 -
备忘录模式
备忘录模式:在不破坏封装性的前提下,不活一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。优点:到我们需要保存一个状态的时候,把保存的细节都封装到了Memento中,当需要去更改保存的细节也不用影响客户端。最主要的好处当然是把需要保存的数据的对象的属性全部隐藏起来了。原创 2016-02-27 19:18:48 · 349 阅读 · 0 评论 -
适配器模式
适配器模式:将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。使用场景:在软件开发中,当我们需要复用一些现存的类,然而接口不符合时,就要使用适配器模式。优点:可以提高软件类的复用性,并且大大的降低了维护的难度原创 2016-02-23 17:55:30 · 395 阅读 · 0 评论 -
Android MVP Pattern
原文地址:https://segmentfault.com/a/1190000003927200Android MVP 模式 也不是什么新鲜的东西了,我在自己的项目里也普遍地使用了这个设计模式。当项目越来越庞大、复杂,参与的研发人员越来越多的时候,MVP 模式的优势就充分显示出来了。导读:MVP模式是MVC模式在Android上的一种变体,要介绍MVP就得先介绍MVC。在MVC转载 2016-03-08 10:15:19 · 860 阅读 · 0 评论 -
状态模式
状态模式:用官方的话来说就是,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。说白了这个模式就是为了消除庞大的分支语句。使用场景:官方话来说就是,当一个对象的行为取决于他的状态,并且他在运行的时刻根据状态改变他的行为时使用,其实就是出现特别复杂庞大的分支语句的时候,或者因为这些分之语句导致耦合性特别高的时候使用。优点:将与特定状态相关的的行为局部化,并且将不同的状态的行为分原创 2016-02-22 18:32:51 · 341 阅读 · 0 评论 -
观察者模式
观察者模式一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象状态发生变化会通知所有的观察者对象,使他们能够自己更新自己。原创 2016-02-20 18:58:39 · 302 阅读 · 0 评论 -
建造者模式
使用场景:建造模式实在当创建对象的算法应该独立于对象的组成部分以及他们的装配方案时适用的模式。优点:建造代码和表示代码分离,由于建造者隐藏了该产品的是如何组装的,所以需要退出类似的新产品的时候,只需要再定义一个具体的建造者就行了。原创 2016-02-19 18:26:30 · 317 阅读 · 0 评论 -
外观模式
使用场景在开发过程中,我们经常需要对一个应用分成不同的层次,例如经典的三层架构,就需要考虑数据访问层和逻辑处理层,逻辑处理层和表示层的层与层之间建立外观Facade,这样可以给复杂的子系统提供一个方便操作的简单的接口,使得耦合程度大大降低。其次在开发过程中,子系统往往因为过多的重构而变得越来越复杂,大多数的模式使用时也会产生很多很小的类,这本是好事,但是却增加了外部调用的复杂度,这是增加一个Fa原创 2016-02-18 12:44:20 · 368 阅读 · 0 评论 -
中介者模式
中介者模式,用一个中介者对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。使用场景:中介者模式模式一般应用于一组对象以定义良好但是复杂的方式进行通信的场合,以及向定制一个分布在多个类中的行为,而又不太像生成太多子类的场合。优缺点:适当地使用中介者模式可以避免同事类之间的过度耦合,使得各同事类之间可以相对独立地使用。使用中介者模式原创 2016-03-04 16:55:59 · 305 阅读 · 0 评论 -
职责链模式
职责链模式:使多个对象都有机会处理请求传递,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。原创 2016-03-04 14:16:21 · 354 阅读 · 0 评论 -
命令模式
命令模式:将一个请求封装成为一个对象,从而使你可用不同的请求对客户端进行参数化;对请求摆对或者记录请求日志,以及支持可撤销的操作。使用场景:对于大多数请求-响应模式的功能,比较适合使用命令模式,正如命令模式定义说的那样,命令模式对实现记录日志、撤销操作等功能比较方便。原创 2016-03-03 18:38:34 · 342 阅读 · 0 评论 -
桥接模式
桥接模式,将抽象部分与它的实现部分分离,使他们都可以独立的变化。使用场景:如果一个系统需要在构件的抽象化角色和具体化角色之间添加更多的灵活性,避免在两个层次之间建立静态的联系。设计要求实现化角色的任何改变不应当影响客户端,或者实现化角色的改变对客户端是完全透明的。需要跨越多个平台的图形和窗口系统上。一个类存在两个独立变化的维度,且两个维度都需要进行扩展。优点:可以使系统的两个维度独立的变原创 2016-03-03 15:10:43 · 274 阅读 · 0 评论 -
组合模式
组合模式:将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象的使用的具体一致性。使用场景:需求中是体现部分与整体层次的机构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一的使用组合结构中的所有对象时,就应该考虑用组合模式了。优点:组合模式定义了包含基本对象和组合对象的类层次结构,基本对象可以被组合成更复杂的组合对象,而这个组合对象又可以被组合,这样不断地递归下去原创 2016-02-29 17:49:57 · 382 阅读 · 0 评论