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

结构型模式描述如何组织类和对象以组成更大的结构。

结构型类模式采用继承机制来组合接口和实现,

结构型对象模式则采用组合聚合来组合对象以实现新功能,可以在运行时刻改变对象组合关系,具有更大灵活性,故这里只关注结构型对象模式。

一般常见的结构型模式有7种:ABCDFFP(Adapter,Bridge,Composite,Decorator,Façade,Flyweight,Proxy)

1.适配器模式(Adapter)使由于接口不兼容而不能一起工作的类可以一起工作

有类或对象适配器模式,解决已存在目标客户接口和已存在功能类接口不兼容的问题。

对象适配器模式实现上是适配器对象包含一个被适配器对象来进行接口转换;

一般是项目改造或扩充时才用到。适配器模式使得一个接口和其它接口兼容,从而给出了多个不同接口的统一抽象。

 

协作:Client在Adapter的实例上调用一些操作,适配器调用含有的Adaptee对象实现这个操作。

2.桥接模式(Bridge):将抽象和实现分离,使他们可以独立的变化

分离接口和实现,从而使抽象类的实现可以在运行时刻配置,在运行时刻改变其对象的实现;

接口实现分离有利于系统分层,从而产生跟好的结构化系统,可以独立的对Abstractation和Implementor层次结构进行扩充。

封装多维变化,抽象角色内含一个抽象实现角色,精确抽象角色调用父类中的抽象实现角色对象实现,具体实现角色继承抽象实现角色,如果再增加一维抽象,可以当抽象实现角色,在原有的抽象实现角色中包含新增的抽象实现角色,也可以当成新的抽象角色,原有的抽象角色作为一个抽象实现角色;这样说该模式实现时从抽象实现角色这维变化最好。

实例:不同人开不同车在不同路上行驶;不同名牌手机有不同系统不同软件功能;

协作:Abstraction将Client的请求转发给它的Implementor对象。

3.组合模式:将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性

即组合模式定义树状结构,可以将子对象当成整体对象一样处理;抽象构件对象,树枝构件对象,树叶构件对象,根据叶子是否当成枝干来看待可分为透明性和安全性两种模式。

组合模式必须提供管理子对象的方法,但管理对象的方法是在Component中就声明还是在Composite中声明呢?如下图在Component中声明所有用来管理子类对象的方法,以达到Component接口的最大化,从而使客户在接口层次上看树叶和树枝没有区别——透明性,但树叶是不存在子类的,可能有安全问题。

下图只在Composite中声明所有管理子类的方法,避免了上面的安全性问题,但是树枝和叶子又不同的接口,失去了透明性。

协作:用户使用Component类接口与组合结构中的对象交互,如果接收者是一个叶节点,则直接处理请求,如果接受者是Composite,它通常将请求发送给它的子部件,再转发请求之前或之后可能执行一些辅助操作。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值