设计模式之结构型模式

来源:互联网 发布:带英语的网络流行语 编辑:程序博客网 时间:2024/05/21 08:50

结构型模式主要有7个,主要是如何组合类与对象以获得更大的结构。其实在实现这些模式上基本都是继承或者组合。我们关键要弄清楚模式的目的是什么。还有一个词叫反模式。模式就是一些肯定的结构,方法,经验;反模式反之。结构型模式之间是十分相似的。


评述:Adapter与bridge结构相似,目的不同。composite与decorator结构相似,目的不同,子类的关系不同。facade在模块设计的时候都用到了此模式的。flyweight减少大量重复的对象,一般需要一个池对象,也肯定要与工厂模式结合。proxy代理模式应用很广泛,在java中还有动态代理。可见我另外一篇博客:java代理及动态代理


一、Adapter:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的类可以一起工作。



二、Bridge(桥接):将抽象的部分与它实现的部分分离,使他们都可以独立的变化。与Adapter的区别,其实实现差不多,关键在于目的。Adapter主要是为了解决两个已有接口的不匹配问题。它不考虑这些接口怎么是怎么实现的,也不考它们各自怎么演化。Bridge则对抽象接口与它的实现部分进行桥接。虽然这个模式下你可以修改它的类,它仍然为用户提供一个稳定的接口。




三、Composite(组合):将对象组合成树形的结构以表示"部分--整体"的层次结构。Composite使得用户对单个对象与组合对象的使用具有一致性。





四、Decorator(装饰):动态地给一个对象添加一些额外的职责。 与 Composite有相似的结构。都基于递归来组织可变的数目的对象。但关键还还是目的不一样。




五、Facade(外观模式):为子系统的一组接口提供一个一致的界面。定义一个高层的接口,使得这个子系统更加容易使用,我们的子模块一般都是这么做的。



六、Flyweight(享元):运用共享技术有效地支持大量细粒度的对象。



七、Proxy(代理):为其他的对象提供一个代理以控制对这个对象的访问。这个模式很简单,结构也很简单。用起来有许多的方式,目前有很多的新名词:远程代理、虚代理、保护代理、智能指引等





原创粉丝点击