结构型模式:讨论的是类和对象的结构,其中结构型模式采用继承机制来组合接口或实现,结构型对象模式通过组合一些对象,从而实现新的功能。共包含了七种模式,下面分别介绍一下
适配器模式:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(想使用一个已经存在的类,但是如果他的接口,也就是他的方法和你的要求不相同时;两个类所做的事情相同或相似,但是具有不同的接口时使用它)
在生活中最简单的实例就是变压器,它可以将大幅度的电压转换成低电压以供各种电器的使用。
桥接模式:将抽象部分与他的实现部分分离,使他们都可以独立地变化。实现指的是抽象类和他的派生类用来实现自己的对象,用聚合代替继承(合成/聚合复用原则:聚合弱,合成强)
组合模式——将对象组合成树形结构以表示‘部分—整体’的层次。组合模式使得用户对单个对象和组合对象的使用具有一致性。(需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时)
装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。为已有的功能动态的顺序的添加更多功能的一种方式(向旧程序添加代码)把类的核心职责和装饰功能分开。
外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观类了解所有子系统的方法和属性,以供调用(设计初期,分离层次;)
享元模式:运用共享技术有效地支持大量细粒度的对象。(如果一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时和对象的大多数状态可以外部状态时使用)
代理模式:为其他对象提供一种代理以控制对这个对象的访问(远程代理,虚拟代理,安全代理,只能代理)
异同:
代理模式对象代表一个单一对象,并且客户对象无法直接访问目标对象,由代理提供对单独的目标对象的访问控制对象;外观模式对象代表一个子系统,并且客户对象可以直接访问子系统中的各个对象,但通常由外观对象提供对子系统各元件功能的简化的共同层次的调用接口。
代理模式具有一种衔接功能,代理是一种对原来对象的代表,其他需要与这个对象打交道的操作都是和这个代表交涉
适配器模式也具有一种衔接功能,不需要虚构代表,只需要为应付特定使用目的,将原来的类进行一些组合。
外观模式是对现有系统的封装,定义一个新的接口,为现存系统提供一个更为方便的访问接口,如果与适配器相比,则它更像是对整个子系统的适配;适配器模式也是对现有系统的封装,复用一个原有的接口,使两个已有的接口协同工作,用来适配对象。