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
1700480947
设计模式之禅 第四部分 完美世界——设计模式混编
1700480948
1700480950
第34章 命令模式+责任链模式
1700480951
1700480953
34.1 搬移UNIX的命令
1700480954
1700480955
在操作系统的世界里,有两大阵营一直在PK着:*nix(包括UNIX和Linux)和Windows。从目前的统计数据来看,*nix在应用服务器领域占据相对优势,不过Windows也不甘示弱,国内某些小型银行已经在使用PC Server(安装Windows操作系统的服务器)集群来进行银行业务运算,而且稳定性、性能各方面的效果不错;而在个人桌面方面,Windows是占绝对优势的,大家应该基本上都在用这个操作系统,它的诸多优点这里就不多说了,我们今天就来解决一个习惯问题。如果你负责过UNIX系统维护,你自己的笔记本又是Windows操作系统的话,我想你肯定有这样的经验,如图34-1所示。
1700480956
1700480957
1700480958
1700480959
1700480960
图34-1 时常犯的错误
1700480961
1700480962
是不是经常把UNIX上的命令敲到Windows系统了?为了避免这种情况发生,可以把UNIX上的命令移植到Windows上,也就是Windows下的shell工具,有很多类似的工具,比如cygwin、GUN Bash等,这些都是非常完美的工具,我们今天的任务就是自己写一个这样的工具。怎么写呢?我们学了这么多的模式,当然要融会贯通了,可以使用命令模式、责任链模式、模板方法模式设计一个方便扩展、稳定的工具。
1700480963
1700480964
我们先说说UNIX下的命令,一条命令分为命令名、选项和操作数,例如命令”ls-l/usr”,其中,ls是命令名,l是选项,/usr是操作数,后两项都是可选项,根据实际情况而定。UNIX命令一定遵守以下几个规则:
[
上一页 ]
[ :1.700480915e+09 ]
[
下一页 ]