网站的链接建设,新浪微博关联wordpress,宣传片拍摄制作公司哪家好,网站开发项目怎么接命令模式#xff1a;一种数据驱动的设计模式也属于行为型模式#xff0c;请求以命令的形式包裹在对象中#xff0c;并传给调用对象。调用对象寻找可以处理该命令的合适的对象#xff0c;并把该命令传给相应的对象#xff0c;该对象执行命令。你认为是命令的地方都可以使用…命令模式一种数据驱动的设计模式也属于行为型模式请求以命令的形式包裹在对象中并传给调用对象。调用对象寻找可以处理该命令的合适的对象并把该命令传给相应的对象该对象执行命令。你认为是命令的地方都可以使用命令模式。
介绍
意图将一个请求封装成一个对象从而使您可以用不同的请求对客户进行参数化。主要解决问题行为请求者与行为实现者的关系紧耦合将行为请求者与行为实现者解耦通过调用者调用接受者执行命令顺序调用者→接受者→命令。关键代码定义三个角色命令、接受者、调用者优点1、降低了系统耦合度。 2、新的命令可以很容易添加到系统中去。缺点使用命令模式可能会导致某些系统有过多的具体命令类
示例
还是以绘制三角形、圆形、矩形为例 创建一个绘制命令接口抽象命令
//抽象命令
public interface Drawing {void execute();
} 接收者接收 绘制方法 //接收者
public class Draw {public void triangle(){//绘制三角形逻辑}public void circular(){//绘制圆形逻辑}public void rectangle(){//绘制矩形逻辑}} 具体命令 绘制三角形具体命令 //具体绘制三角形命令
public class TriangleDraw implements Drawing {Draw draw;public TriangleDraw(Draw draw) {this.draw draw;}Overridepublic void execute() {draw.triangle();}
} 绘制圆形具体命令 //具体绘制圆形命令
public class CircularDraw implements Drawing{Draw draw;public CircularDraw(Draw draw) {this.draw draw;}Overridepublic void execute() {draw.circular();}
} 绘制矩形具体命令 //具体绘制矩形命令
public class RectangleDraw implements Drawing{Draw draw;public RectangleDraw(Draw draw) {this.draw draw;;}Overridepublic void execute() {draw.rectangle();}
} 使用 //使用示例public static void main(String[] args) {Draw draw new Draw();TriangleDraw triangleDraw new TriangleDraw(draw);CircularDraw circularDraw new CircularDraw(draw);RectangleDraw rectangleDraw new RectangleDraw(draw);Canvas canvas new Canvas();canvas.takeDrawing(triangleDraw);canvas.takeDrawing(circularDraw);canvas.takeDrawing(rectangleDraw);canvas.call();}