设计模式:桥接模式和装饰模式
桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。
抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。修正抽象化(RefinedAbstraction)角色:扩展抽象化角色,改变修正父类对抽象化的定义。实现化(Implementor)角色:这个角色给出实现化角色的接口,但不给出具体的实现。具体实现化(ConcreteImplementor)角色:这个角色给出实现化角色接口的具体实现。5、Java应用场景
桥梁模式在Java应用中的一个非常典型的例子就是JDBC驱动器。抽象API可以对各种数据库引擎发出SQL指令,并不直接与数据库引擎互动,JDBC驱动器负责这个底层的工作。
JDBC的这种架构,把抽象部分和具体部分分离开来,从而使得抽象部分和具体部分都可以独立地扩展。
孙悟空有七十二般变化,他的每一种变化都给他带来一种附加的本领。他变成鱼儿时,就可以到水里游泳;他变成鸟儿时,就可以在天上飞行。
装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。
装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。
抽象构件角色:给出一个抽象接口,以规范准备接收附加责任的对象。具体构件角色:定义一个将要接收附加责任的类。装饰角色:持有一个构件对象的实例,并定义一个与抽象构件接口一致的接口。具体装饰角色:负责给构件对象“贴上”附加的责任。6、该模式简化
3)、这就导致了大多数的装饰模式的实现都是“半透明”的,而不是完全透明的。换言之,允许装饰模式改变接口,增加新的方法。这意味着客户端可以声明ConcreteDecorator类型的变量,从而可以调用ConcreteDecorator类中才有的方法。
4)、半透明的装饰模式是介于装饰模式和适配器模式之间的。适配器模式的用意是改变类的接口,也可以通过改写一个或几个方法,或增加新的方法来增强类的功能。
装饰模式在Java语言中的最经典的应用就是Java I/O类库的设计。很少单一的创建流对象,通过创建多个叠合对象来提供所期望的IO流功能,因此装饰模式是Java I/O类库的基本模式。2)、IO流图解描述
(1)装饰模式与继承关系的目的都是要扩展对象的功能,但是装饰模式可以提供比继承更多的灵活性。装饰模式允许系统动态决定“贴上”一个需要的“装饰”,或者除掉一个不需要的“装饰”。继承关系则不同,继承关系是静态的,它在系统运行前就决定了。
(2)通过使用不同的具体装饰类以及这些装饰类的排列组合,工程师可以创造出很多不同行为的组合。
由于使用装饰模式,可以比使用继承关系需要较少数目的类。使用较少的类,当然使设计比较易于进行。但是,在另一方面,使用装饰模式会产生比使用继承关系更多的对象。
- 标签:本站
- 编辑:杨保录
- 相关文章
-
设计模式:桥接模式和装饰模式
桥梁模式是对象的结构模式
-
深入分析设计模式中的装饰模式(java代码实现)
我们都去过奶茶店买过奶茶吧,一种奶茶可能有很多不同的产品,同一种产品也有很多不同的口味…
- 一组适合零基础画的简笔画教程
- 模式赢天下·服务定江山 赫峰装潢品牌战略发布会暨山东区经销商签约仪式举行
- 嫦娥简笔画(嫦娥奔月简笔画古风)
- 佳星望装饰用互联网创建O2O家装新模式
- 新疆桑皮纸绘画展:笔墨丹青展丝路古风