打字猴:1.700481944e+09
1700481944 /usr 102400
1700481945
1700481946 /home t10240000
1700481947
1700481948 #df-g
1700481949
1700481950 /
1700481951
1700481952 10
1700481953
1700481954 /usr 100
1700481955
1700481956 /home t10000
1700481957
1700481958 #
1700481959
1700481960 仅仅增加类就完成了变更,这才是我们要的结果:对修改关闭,对扩展开放。
1700481961
1700481962
1700481963
1700481964
1700481965 设计模式之禅 [:1700454081]
1700481966 设计模式之禅 34.2 混编小结
1700481967
1700481968 在这里的例子中用到了以下模式:
1700481969
1700481970 ❑责任链模式
1700481971
1700481972 负责对命令的参数进行解析,而且所有的扩展都是增加链数量和节点,不涉及原有的代码变更。
1700481973
1700481974 ❑命令模式
1700481975
1700481976 负责命令的分发,把适当的命令分发到指定的链上。
1700481977
1700481978 ❑模板方法模式
1700481979
1700481980 在Command类以及子类中,buildChain方法是模板方法,只是没有基本方法而已;在责任链模式的CommandName类中,用了一个典型的模板方法handlerMessage,它调用了基本方法,基本方法由各个实现类实现,非常有利于扩展。
1700481981
1700481982 ❑迭代器模式
1700481983
1700481984 在for循环中我们多次用到类似for(Class c:classes)的结构,是谁来支撑该方法运行?当然是迭代器模式,只是JDK已经把它融入到了API中,更方便使用了。
1700481985
1700481986 可能读者已经注意到了,“ls-l-a”这样的组合选项还没有处理。确实没有处理,以下提供两个思路来处理:
1700481987
1700481988 ❑独立处理
1700481989
1700481990 “ls-l-a”等同于”ls-la”,也等同于”ls-al”命令,可以把”ls-la”中的选项”la”作为一个参数来进行处理,扩展一个类就可以了。该方法的缺点是类膨胀得太大,但是简单。
1700481991
1700481992 ❑混合处理
1700481993
[ 上一页 ]  [ :1.700481944e+09 ]  [ 下一页 ]