2011-12-179
2.2开-闭原则
设计应当对扩展开放,对修改关闭。设计应当对扩展开放,对修改关闭。如果您的设计遵守了“开-闭原则”,那如果您的设计遵守了“闭原则”么这个设计一定是易维护的,么这个设计一定是易维护的,因为在设计中增加新的模块时,增加新的模块时,不必去修改设计中的核心模块。模块。
2011-12-1710
2.3高内聚-低耦合原则高内聚如果类中的方法是一组相关的行为,如果类中的方法是一组相关的行为,则称该类是高内聚的反之称为低内聚的。称该类是高内聚的,反之称为低内聚的。高内聚所谓低耦合就是尽量不要让一个类含有所谓低耦合就是尽量不要让一个类含有低耦合太多的其它类的实例的引用,太多的其它类的实例的引用,以避免修改
系统的其中一部分会影响到其它部分。系统的其中一部分会影响到其它部分。
2011-12-1711
第四章
命令模式
命令模式(别名:动作,事务)命令模式(别名:动作,事务)将一个请求封装为一个对象,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。及支持可撤消的操作。CommandPattern(AnotherName:Action,Transaction)Encapsulatearequestasanobject,therebylettingyouparameterizeclientswithdifferentrequests,queueorlogrequests,andsupportund
oableoperations.
2011-12-1712
一、概述
在许多设计中,经常涉及到一个对象请求另一个对在许多设计中,象调用其方法到达某种目的。象调用其方法到达某种目的。如果请求者不希望或无法直接和被请求者打交道,法直接和被请求者打交道,即不希望或无法含有被请求者的引用,那么就可以使用命令模式。求者的引用,那么就可以使用命令模式。
2011-12-1713
实例
在军队作战中,指挥官请求三连偷袭敌人,但是指挥官不希望或无法直接与三连取得联系,那么可以将该请求:“三连偷袭敌人”形成一个“作战命令”。只要能让该作战命令被执行,就会实现三连偷袭敌人的目的。
二、命令模式的结构与使用
模式的结构中包括四种角色:模式的结构中包括四种角色:????
2011-12-1715
接收者(Receiver)接收者(Receiver)命令(Command)接口命令(Command)接口(Command)具体命令(ConcreteCommand)具体命令(ConcreteCommand)请求者(Invoker)请求者(Invoker)
模式的UML类图模式的UML类图UML
2011-12-1716
模式的结构的描述与使用
1.接收者(Receiver):CompanyArmy.java接收者(Receiver)publicclassCompanyArmy{publicvoidsneakAttack(){System.out.我们知道如何偷袭敌人,");System.out.println("我们知道如何偷袭敌人,保证完成任务");}}
2011-12-1717
模式的结构的描述与使用
2.命令(Command)接口:Command.java命令(Command)publicinterfaceCommand{execute();publicabstractvoidexecute();}
2011-12-1718
模式的结构的描述与使用3.具体命令(ConcreteCommand)ConcreteCommand.java具体命令(ConcreteCommand)publicclassConcreteCommandimplementsCommand{//含有接收者的引用CompanyArmyarmy;//含有接收者的引用ConcreteCommand(CompanyArmyarmy){this.army=army;}//封装着指挥官的请求publicvoidexecute(){//封装着指挥官的请求//偷袭敌人army.sneakAttack();//偷袭敌人}}
2011-12-1719
模式的结构的描述与使用4.请求者(Invoker)ArmySuperior.java请求者(Invoker)publicclassArmySuperior{command;//用来存放具体命令的引用Commandcommand;//用来存放具体命令的引用publicvoidsetCommand(Commandcommand){this.command=command;this.command=command;}publicvoidstartExecuteCommand(){