【设计模式】——结构型设计模式

结构型设计模式涉及如何组合类和对象以获得更大得结构。结构类模式采用继承机制来组合接口或实现。
结构型对象模式不是对接口和实现进行组合,而是描述了如何对一些对象进行组合,从而实现新功能得一些方法。因为可以在运行时刻改变对象组合关系,所以对象组合方式具有更大得灵活性,而这种机制用静态组合是不可能实现的。

适配器(Adapter)

意图:将一个类得接口转换成客户希望得另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作得那些类可以一起工作。
适用性:
(1)想使用一个已经存在的类,而它的接口不符合要求
(2)想创建一个可以服用的类,该类可以与其他不相关的类或不可预见的类协同工作。(接口可能不一定兼容的类)
(3)仅适用于对象Adapter想使用一个已经存在的子类,但是不可能对每个都进行子类化以匹配它们的接口,对象适配器可以适配它的父类接口。

桥接(Bridge)

意图:将抽象部分与其实现部分分离,使它们都可以独立的变化
适用性:
(1)不希望在抽象和它的实现部分之间有一个固定的绑定关系。
(2)类的抽象以及它的实现都应该通过生成子类 的方法加以扩充。这是Bridge模式使的开发者可以对不同的抽象接口和实现部分进行组合,并分别对他们进行扩充。
(3)对一个抽象的实现部分的修改应对客户不产生影响,即客户代码不必重新编译
(4)C++想对客户完全隐藏抽象的实现部分
(5)有许多类要生成的类层次接口
(6)想在多个对象间共享实现(可能使用引用计数)但同时要求客户并不知道这一点。

组合(Composite)

意图:将对象组合成树形结构以表示“部分—整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。
适用性:
(1)想表示对象的部分-整体层次结构
(2)希望用户忽略组合对象与单个对象的不同,用户将统一的使用组合结构中的所有对象。

装饰(Decorator)

意图:动态的给一个对象添加一些额外的职责,就增加功能而言,Decorator模式比生成子类更加灵活。
适用性:
(1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责
(2)处理那些可以撤销的职责
(3)当不能采用生成子类的方式进行扩充时,一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是,由于类定义被隐藏,或定义不能用于生成子类。

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值