打字猴:1.700480899e+09
1700480899
1700480900 liSi=new Singer(new ActFilm());
1700480901
1700480902 liSi.doJob();
1700480903
1700480904 }
1700480905
1700480906 }
1700480907
1700480908 运行结果如下所示:
1700480909
1700480910 ======影星的工作=====
1700480911
1700480912 演出精彩绝伦的电影
1700480913
1700480914 ======歌星的工作=====
1700480915
1700480916 唱出优美的歌曲
1700480917
1700480918 ======歌星的工作=====
1700480919
1700480920 演出精彩绝伦的电影
1700480921
1700480922 好了,各类明星都有自己的本职工作,但是偶尔客串一个其他类型的活动也是允许的,如此设计后,明星就可以不用固定在自己的本职工作上,而是向其他方向发展,比如影视歌三栖明星。
1700480923
1700480924 门面模式我们在其他章节已经讲解得比较多了,本小节就不再赘述。
1700480925
1700480926
1700480927
1700480928
1700480929 设计模式之禅 33.3.5 最佳实践
1700480930
1700480931 5个包装模式是大家在系统设计中经常会用到的模式,它们具有相似的特征:都是通过委托的方式对一个对象或一系列对象(例如门面模式)施行包装,有了包装,设计的系统才更加灵活、稳定,并且极具扩展性。从实现的角度来看,它们都是代理的一种具体表现形式,我们来看看它们在使用场景上有什么区别。
1700480932
1700480933 代理模式主要用在不希望展示一个对象内部细节的场景中,比如一个远程服务不需要把远程连接的所有细节都暴露给外部模块,通过增加一个代理类,可以很轻松地实现被代理类的功能封装。此外,代理模式还可以用在一个对象的访问需要限制的场景中,比如AOP。
1700480934
1700480935 装饰模式是一种特殊的代理模式,它倡导的是在不改变接口的前提下为对象增强功能,或者动态添加额外职责。就扩展性而言,它比子类更加灵活,例如在一个已经运行的项目中,可以很轻松地通过增加装饰类来扩展系统的功能。
1700480936
1700480937 适配器模式的主要意图是接口转换,把一个对象的接口转换成系统希望的另外一个接口,这里的系统指的不仅仅是一个应用,也可能是某个环境,比如通过接口转换可以屏蔽外界接口,以免外界接口深入系统内部,从而提高系统的稳定性和可靠性。
1700480938
1700480939 桥梁模式是在抽象层产生耦合,解决的是自行扩展的问题,它可以使两个有耦合关系的对象互不影响地扩展,比如对于使用笔画图这样的需求,可以采用桥梁模式设计成用什么笔(铅笔、毛笔)画什么图(圆形、方形)的方案,至于以后需求的变更,如增加笔的类型,增加图形等,对该设计来说是小菜一碟。
1700480940
1700480941 门面模式是一个粗粒度的封装,它提供一个方便访问子系统的接口,不具有任何的业务逻辑,仅仅是一个访问复杂系统的快速通道,没有它,子系统照样运行,有了它,只是更方便访问而已。
1700480942
1700480943
1700480944
1700480945
1700480946 设计模式之禅 [:1700454078]
1700480947 设计模式之禅 第四部分 完美世界——设计模式混编
1700480948
[ 上一页 ]  [ :1.700480899e+09 ]  [ 下一页 ]