顺德大良营销网站建设,档案信息网站建设遵循什么原则,手机微信的网站案例,网站策划书优势怎么分析题型及分值#xff1a; 选择 30 分#xff0c;填空 20 分#xff0c; 判断 10 分#xff0c;简答 20 分#xff0c;综合设计 20 分。 文章目录 三、行为型模式1. 命令模式2. 迭代器模式3. 观察者模式4. 状态模式5. 策略模式 三、行为型模式 
1. 命令模式 
举个例子#x… 题型及分值 选择 30 分填空 20 分 判断 10 分简答 20 分综合设计 20 分。 文章目录 三、行为型模式1. 命令模式2. 迭代器模式3. 观察者模式4. 状态模式5. 策略模式   三、行为型模式 
1. 命令模式 
举个例子总经理要向公司的所有员工传达一些命令但他不可能亲自去通知所有人而是先把要吩咐的话通知给各部门负责人再由各部门的负责人去向下传达指令总经理和具体的员工之间是没有直接交流的这就是命令模式。 
将一个请求封装为一个对象从而让你可以用不同的请求对客户迚行参数化对请求排队戒者记录请求日志以及支持可撤销的操作。 整体结构 ① 一个抽象命令类内置公共命令方法 ② 数个具体命令类重写父类的命令方法并在里面调用接收者的接收方法 ③ 数个接收类内置具体的接收方法 ④ 数个调用者类即命令类与接收类的桥梁通过带参构造方法传入命令类自定义 call 方法里面调用命令类的命令方法。 public public abstract class Command {public abstract void execute( );
}public class ConcreteCommand extends Command {private Receiver receiver; //维持一个对请求接收者对象的引用public void execute() {receiver.action( ); //调用请求接收者的业务处理方法action( )}
}public class Receiver {public void action( ) {//具体操作}
}public class Invoker {private Command command;public Invoker(Command command) {this.command  command;}public void setCommand(Command command) {this.command  command;} public void call() {command.execute( );}
}2. 迭代器模式 
迭代器模式顾名思义它就是用来访问聚合对象的对于遥控器和电视机此时遥控器就是一个迭代器而电视机就是它所对应的聚合对象人们根本不需要关心这些频道是如何存储到电视里面的他们只知道如何去用就可以了。为了拓展方便需要定义一个抽象迭代器和一个抽象聚合类在具体的聚合类中自然要调用迭代器中的方法去进行电视台的迭代这里可以按照课本上的方法将具体的迭代器类作为具体聚合类的内部类就是说我们不必要再去创建具体的迭代器类了但全部功能都放在具体聚合类中有违开闭原则因为迭代器也可能增加新的功能所以也可以直接创一个具体迭代器类在聚合类中直接传参并调用具体迭代器类即可。 
迭代器用于对一个聚合对象进行遍历。通过引入迭代器可以将数据的遍历功能从聚合对象中分离出来聚合对象只负责存储数据而遍历数据由迭代器来完成。 整体结构 ① 一个抽象迭代器类 ②一个具体迭代器类遥控器内置正、逆遍历方法及一些判断开始和结尾的方法 ③ 一个抽象聚合类 ④ 数个具体聚合类不同的电视机内置频道及创建迭代器的方法。 public interface TVIterator {void next();void previous();boolean isFirst();boolean isLast();//设置电视台void setChannel(int i);//返回当前电视台Object currentChannel();}public class TVIteratorImpl implements TVIterator {Object[] obj;private int currentIndex  0;public TVIteratorImpl(Object[] obj) {this.obj  obj;}Overridepublic void next() {if (currentIndex  obj.length) {currentIndex;}}Overridepublic void previous() {if (currentIndex  0) {currentIndex--;}}Overridepublic boolean isFirst() {return currentIndex  0;}Overridepublic boolean isLast() {return currentIndex  obj.length;}Overridepublic void setChannel(int i) {currentIndex  i;}Overridepublic Object currentChannel() {return obj[currentIndex];}}public interface Television {TVIterator createIterator();
}public class HuaWeiTelevision implements Television {Object[] obj  {少儿频道, 中央卫视, 山西卫视, 湖南卫视, 电影频道, 江西卫视, 青海卫视};Overridepublic TVIterator createIterator() {return new TVIteratorImpl(obj);}}3. 观察者模式 
一个对象的状态或行为的变化将导致其他对象的状态或行为也发生改变它们之间将产生联劢。 还是以实验内容为例股民观察股票价格动荡从而做出反应。一个对象的改变将导致一个或多个其他对象发生改变并且不知道具体有多少对象将发生改变也不知道这些对象是谁。解决办法在系统中创建一个触发链。一个目标可以有很多的观察者在目标类中添加方法实现对观察者的增加和删除同时目标类是要发出警告消息的提供一个notify方法用于通知每一个观察者这里发出一个警告所有的观察者都必须对此警告作为相应的反应实现方式是遍历观察者集合并调用其update方法观察者类中的update方法就是观察者收到警告后做出的反应。 
观察者模式定义对象间的一种一对多依赖关系使得每当一个对象状态发生改变时其相关依赖对象皆得到通知并被自动更新。 整体结构 ① 一个目标类内置添加或删除观察者的方法所有的观察者都被放在一个集合里面再写一个通知方法里面遍历集合中所有的观察者并调用它们各自的 upDate 方法当外部调用通知方法的时候就相当于把通知传达给了各观察者 ② 一个抽象观察者类提供 update 方法 ③ 数个观察者类重写抽象观察者中的方法当面对一个通知的时候所应该做出的反应。 import java.util.ArrayList;public class Stock {private String StockName;private int price;ArrayListInvestor investors  new ArrayList();public void attach(Investor investor) {investors.add(investor);}public void detach(Investor investor) {investors.remove(investor);}public String getStockName() {return StockName;}public void setStockName(String stockName) {StockName  stockName;}public int getPrice() {return price;}public void setPrice(int price) {this.price  price;}public void notifyInvestor() {System.out.println(\n通知  StockName  股票价格变化幅度已达 5%最新价格为  price  。);System.out.println(*******************************************************************\n);for (Investor i : investors) {i.upDate();}}}public abstract class Investor {public abstract void upDate();
}public class ConcreteInvestor1 extends Investor {Overridepublic void upDate() {System.out.println(股民1怎么又变了我真的会谢哦~);}
}public class ConcreteInvestor2 extends Investor {Overridepublic void upDate() {System.out.println(股民2变得好正好不想买了~);}
}public class ConcreteInvestor3 extends Investor {Overridepublic void upDate() {System.out.println(股民3无欲无求乃人生最大的乐趣~);}
}4. 状态模式 
该模式不太重要又难所以我们不用硬看这个状态模式。 状态模式允许一个对象在其内部状态改变时改变它的行为对象看起来似乎修改了它的类。 整体结构 ① 一个抽象状态类 ② 数个具体状态类 ③ 数个环境类。 public class Context {private State state; //维持一个对抽象状态对象的引用private int value; //其他属性值其变化可能会导致对象的状态变化public void setState(State state) {this.state  state;}public void request() {state.handle( ); //调用状态对象的业务方法}
}5. 策略模式 
策略模式中包含策略类和环境类。具体策略类可以有很多继承至抽象策略类环境类其实是使用策略的角色在环境类中维护一个对抽象策略类的引用实例用于定义所采用的策略。在测试类中给环境类传入具体策略参数继而在环境类中调用具体策略类的处理方法最后在控制台输出结果。 
策略模式定义一系列算法将每一个算法封装起来并让它们可以相互替换。实现某个目标的途径不止一条可根据实际情况选择一条合适的途径。  整体结构 ① 一个抽象策略类 ② 数个具体策略类重写抽象方法 ③ 一个环境类客户端传入一种策略由环境类来调用具体的策略方法。 public interface TravelStrategy {void travel();
}public class AirplaneStrategy implements TravelStrategy {Overridepublic void travel() {System.out.println(飞机旅行);}
}public class TrainStrategy implements TravelStrategy {Overridepublic void travel() {System.out.println(火车旅行);}
}public class Person {private TravelStrategy strategy;public void setStrategy(TravelStrategy strategy) {this.strategy  strategy;}public void travel() {strategy.travel();}}