设计模式-结构性设计模式

发布时间 2023-12-07 21:23:21作者: 实名吓我一跳

  分为6种结构性设计模式,适配器模式,桥接模式,组合模式,装饰模式,外观模式,享元模式,代理模式,结构性设计模式就比创建型设计模式复杂一些,

  适配器设计模式:就是提供一个适配器,转接口的存在,有三个角色,目标类,适配器类,适配者类,有两种实现方式,类结构型和对象结构性,貌似这是唯一一个可以使用类结构性实现的模式,毕竟java不能进行多继承。类结构性就是适配器类左实现目标类接口,右继承适配者类,在实现的方法中进行调用适配者类,进行实现。对象结构性设计模式就有一些差异,右不进行继承,而是通过关联或者组合,到时候通过对象进行调用方法。

  桥接模式:就是类由于本身的特性,有多个维度的变化,一一实现创造的类太多,使用桥接模式可以进行减少很多类的创建,是对象性结构模式,以下都是对象性结构模式,有四个角色,抽象类,扩充抽象类,实现类接口,具体实现类,扩充抽象类是一个具体的类,通过继承抽象类,用户端进行调用扩充抽象类,实现扩充抽象类的方法,在通过父类抽象类的关联接口实现类接口,进行调用具体实现的方法,进行实现。可以减少由于类的两个不同维度之间的变化造成多个类的产生。

  组合模式:用于表示整体与部分的关系,又叫部分-整体模式,很巧妙的模式,由三个角色构成,构建类,叶子构件,容器构件,最重要的为构建类的设计,叶子构件和容器构件是构建类的子类,同时容器构件聚合构建类,进行设计的,构建类里包含叶子构件的方法和容器构建的方法,叶子构件仅需将自己的叶子事件进行编写,其余不予理会,同样,容器构件将自己的事件进行编写,进行叶子构件的方法的重写(叶子构件是相关方法,容器构建是遍历的操作),在容器构件里,有添加容器构件,移除容器构件,还有一个arrayList数组去存这个容器下的东西,最后有一个方法进行遍历即可。

  装饰模式:就是一种替换继承的方式,有四个角色,抽象构件,具体构件,抽象装饰类,具体装饰类,具体构件和抽象装饰类继承抽象构件,具体装饰类继承抽象装饰类,抽象类有一个抽象构件的对象,用于对具体构件的创建,客户端进行具体装饰类的操作,传入具体构件,进行初始化,进行方法调用,可以在具体装饰类中添加一些方法进行装饰具体构件。

  外观模式:很简单的一种结构性设计模式,片面理解就是web网站的切换的导航栏,用于客户与系统之间进行解耦,有两个角色,外观类和子系统类,外观类关联所有子系统类,客户端与外观类进行操作来进行对子系统类的操作,外观类提供了子系统类的一个操作接口类似。

  享元模式:感觉和单例模式有点像,有享元工厂类,抽象享元类,具体享元类,最重要就是抽象工厂类,进行判断是否已经创建,是则返回已经创建的对象地址,否则进行创建保存返回。

  代理模式:有三个角色,抽象主题角色,代理具体角色,真实主题角色,代理主题角色和真实主题角色继承抽象主题角色,代理主题角色还关联真实主题角色,在代理主题角色里进行实例化真实主题角色对象,然后客户端进行代理主题角色的创建,进行访问方法,在代理角色方法中进行判断(自定义),进行真实主题角色的方法引用(应该很片面,根据书上实例得到的一个感觉)。