白天鹅

设计模式之结构类模式大PK

家住魔仙堡 提交于 2019-11-27 00:36:46
结构类模式大PK 结构类模式包括 适配器模式 、 桥梁模式 、组合模式、 装饰模式 、 门面模式 、 享元模式 和 代理模式 。之所以称其为结构类模式,是因为他们都是通过组合类或对象产生更大结构以适应更高成层次的逻辑需求。我们来分析一下装饰模式和代理模式、装饰模式和适配器模式。 装饰模式VS代理模式    首先要说明的是装饰模式是代理模式的特殊应用,两者的共同点是有相同的接口,不同点事代理模式着重对代理过程的控制,而装饰模式则是对类的功能进行加强或减弱,着重类功能的变化。我们看看两者的类图吧!就是一模一样只是代理类和装饰类的名字不一样了而已。我们通过代理类和装饰类看看二者的区别吧。 //代理模式还是侧重于对代理过程的控制,是否允许功能的执行 public class SingerAgent{ private Singer singer; public SingerAgent(Singer singer){ this.singer = singer; } public void singing(){ Random rand = new Random(); if(rand.nextBoolean()){ System.out.println("代理人同意歌手唱歌"); singer.sing(); }else{ System.out.println("代理人不同意歌手唱歌"); } }