Head First设计模式之享元模式(蝇量模式)

一、定义享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。我们将通过创建 5 个对象来画出 2
27次阅读

Head First设计模式之代理模式

一、定义定义:为其他对象提供一种代理以控制对这个对象的访问在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。二、结构代理模式一般会有三个角色:  抽象角色(Subject):指代理角色和真实角色对外提供的公共方法,一般为一个接口  真实角色(RealSubject):需要实现抽象角色
25次阅读

Head First设计模式之桥接模式

一、定义桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使的抽象和实现都可以独立地变化。主要解决:在多维可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。如何解决:把这种多角度分类分离出来,让它们独立变化,
27次阅读

Head First设计模式之组合模式

一、定义将对象组合成树形结构来表现"整体-部分"层次结构。 组合能让客户以一致的方法处理个别对象以及组合对象。主要部分可以被一致对待问题.在使用组合模式中需要注意一点也是组合模式最关键的地方:叶子对象和组合对象实现相同的接口。这就是组合模式能够将叶子节点和对象节点进行一致处理的原因。二、结构&nbs
29次阅读

Head First设计模式之外观模式

一、定义外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。外观模式不只是简化了接口,也将客户从组件的子系统中解耦。外观和适配器可以包装许多类,但是外观强调的是简化接口,而适配器是为了将接口转换成不同的接口。二、结构外观角色(Facade):是模式的
28次阅读

Head First设计模式之适配器模式

一、定义适配器模式把一个类的接口,变换成客户端所期待的另一种接口,使原本因接口不匹配的两个类能够在一起工作。 二、结构角色:Client:用户类,使用新接口Target来完成某些特定的需求。Target:新的接口类,开放特定接口request来完成某些特定操作,与Client协作。Adap
25次阅读

Head First设计模式之模板方法模式

一、定义在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变算法结构的情况下,重定义该算法中的某些特定步骤。比较通俗的说法,子类决定如何实现算法中的某些步骤,比如两个一连串的操作,操作次序是一样的,有的操作相同,有的不同,将两个连串操作抽象出父类;子类在相同次序,但具体方法不
29次阅读

设计模式的六大原则

单一职责原则定义不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功
16次阅读

设计模式---装饰模式(Decorator)

 装饰模式是为已有功能动态地添加更多功能的一种模式。当系统需要新功能时,一般做法是向旧的类中添加新的代码,这些新加的代码通常影响了原有类的核心职责或行为,在主类中加入新的字段、方法或是逻辑,从而增加了主类的复杂性,而这些新加入的代码仅仅是为了满足一些只在某种特定情况下才会发生的特殊行为的需
29次阅读

设计模式---订阅发布模式(Subscribe/Publish)

订阅发布模式定义了一种一对多的依赖关系,让多个订阅者对象同时监听某一个主题对象。这个主题对象在自身状态变化时,会通知所有订阅者对象,使它们能够自动更新自己的状态。       将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需
42次阅读