
GoF设计模式之结构型模式
conquer0715
追求卓越,成功会在不经意间追上你
展开
-
结构型模式之装饰者模式(Decorator)
一、模式介绍Decorator模式(装饰着模式)又名包装器(Wrapper),主要应用于给某个类的实例(不是类本身)在运行期间动态的添加一些额外的职责。与创建一个子类相比,这种模式更具有灵活性。因为如果因为一个额外功能的扩展就派生出一个子类的话,不断新增的额外功能就会需要不断的派生子类,而且这些扩展的功能必须是事先可预见的,即在编译时就可以确定的,也就是静态的,使用Decorator模式的好处原创 2013-04-01 23:37:14 · 3534 阅读 · 0 评论 -
结构型模式之桥模式(Bridge)
一、模式介绍面向对象的编程过程中我们要实现某一业务模型会先对模型进行抽象建模,抽象确立以后再对其进行实现,通常来讲这是很合乎常理的构建过程,然而我们可能会遇到这样的情况,我们的实现很可能会面临变化,即抽象的实现的某一部分是不稳定的,在我们抽象的众多的实现中都会在同一个维度上进行扩展或改变,比如人这个抽象体我们伟大的祖国给出了十几亿的实现,而我们不能强迫每个人的都穿一样的衣服而我们也不能因为要穿原创 2013-04-18 23:00:55 · 3617 阅读 · 0 评论 -
结构型模式之外观模式(Facade)
一、模式介绍Facade(外观模式):为子系统的一组接口提供一个一致的界面。定义一个高层的接口,使得这个子系统更加容易使用,我们在编程工作中如果遇到复杂多变子系统耦合的问题不妨试试此模式。Facade模式为系统的相对复杂或多变的一组接口或子系统提供了一个一致的门面,调用的客户端无需在关心子这组接口或子系统的工作细节而只与这么门面交互,从而屏蔽了子系统的复杂性也将客户端与复杂的系统类进一步解原创 2013-04-04 01:36:54 · 3464 阅读 · 0 评论 -
结构型模式之代理模式(Proxy 与 JDK动态代理)
一、功能介绍代理模式,顾名思义,就是给一个类做代理,与现实中的代理人、经纪人相类似。在编程工作中遇到以下几种情况可以考虑使用代理模式:1、访问一个类需要经过一些特定的检查(如权限认证),不符合条件的将访问失败2、访问一个类的前后需要添加某些额外的操作(如日志记录)3、由于某些原因无法访问到某个类的特定功能总之代理模式就是控制了类的访问,好比一个中介代为处理客户端的请求,请求的过原创 2013-04-03 00:42:54 · 3424 阅读 · 0 评论 -
结构型模式之享元模式(Flyweight)
一、模式介绍 享元模式是为避免有共性的细粒度的对象大量地被实例化而存在的,它使用的共享技术避免了大量不必要的内存开销,即对于相似的对象尽量使用共享体而不是创建新对象。然而共享体往往不能满足每个对象的个性化要求即不是对象的所有状态都能用来共享,这时候我们可以把对象的状态按是否能被共享分为两部分,能共享的称之为内部状态,不能共享的称之为外部状态。内部状态是共享体内部的(初始化时已确定原创 2013-04-15 18:34:31 · 3651 阅读 · 0 评论 -
结构型模式之适配器模式(Adapter)
一、模式介绍 “适配器模式是把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。”这种情形多发生于重构老系统,或者不同系统的整合的时候,已经有老系统或部分的软件模块接口成型并能很好的工作,而新需求的接口需要完成的工作完全可以由这些已存在的实现参与来完成,只是新接口与老接口的规范不相同不能直接拿来使用,需要在老接口和新接口之间做一个“原创 2013-04-08 10:21:51 · 3560 阅读 · 0 评论 -
结构型模式之组合模式(Composite)
一、模式介绍 组合模式是一个比较常用的模式,它的作用在于讲一系列有相同特征的对象以树形结构组合起来,形成“部分-整体”的层次结构,单个对象和组合对象对客户端开放一致的访问接口,客户端并不知晓访问的是单个对象还是一个组合对象,这就是一种解耦,解除了客户端和复杂对象之间的耦合关系,这使得客户端访问复杂对象变得简单。二、原理图三、示例代码public abstrac原创 2013-04-16 01:13:53 · 3417 阅读 · 0 评论