这是我参与更文应战的第11天,活动概略查看:更文应战

指令办法

指令办法是行为型规划办法,它是将一系列指令封装,用户只需求调用接口就能完毕一系列指令。比方电脑”关机“指令,关于用户或许仅仅一个关机操作,但关于电脑来说底层做了许多事情,暂停保存在实行的事情,保存体系装备,完毕当时进程,毕竟内核指令实在关闭电脑。

界说:央求封装成目标,用户央求在客户端参数化,对央求排队或接口和抽象类的区别记载日志并支撑可撤电脑截图快捷键ctrl加什么消操作。电脑截图快捷键

实战

以下代码乍一看会接口英文觉得有点繁琐,一个功用类其实只需调用Paint就能实现悉数功用,为什么还需求外层包装一层Command然后通过Button再调用?看似把简单的问题杂乱化了。但规划办法上有必要把修正不供应对外,对外只供接口文档给扩展功用,关于调用电脑者来说他只关心功用,不关心进程。指令办法并不是比方简单的将代电脑码做层封装罢了,其间也有它的特性地址,将paint的每个办法由每个Command进行包装是有目的的。当调用对应指令时能够记载对应实行了某个指令,当需求追溯前史时能够找到之前实行哪条指令从而使流程上支撑可撤消功用。

所以在代码层次上看如同直接能够调用Paint就能完毕的作业,为什么还需求封装这么多类去完毕是有道理和原因的。规划杂乱的目的是为接口英文了让体接口的效果系更健旺更具扩展性,并不是为了杂乱而电脑蓝屏杂乱。

pub电脑蓝屏lic class Paint{
public void drawLine(){}
public void drawCircle(){}
public void drawRectangl接口测试用例怎样写e(){}电脑怎样录屏
public void f电脑开不了机illColor(){}
}
public inte电脑快捷键rface Command{
void execute();
}
public class DrawLineCommand implements Command{
Paint  paint;
public DrawLineCommand(Paint paint){
this.paint = paint;
}
@override
void execute(){
paint.drawLine电脑蓝屏();
}
}
..电脑锁屏快捷键....
public class Fill电脑快捷键ColorCommand implements Command{
Paint  paint;
public FillColorCo电脑锁屏快捷键mmand(Paint paint){
this.paint = paint;
}
@over接口文档ride
void execute(){
paint.fillColor();
}
}
public class Butto电脑快捷键n{
private DrawLineCommand drawLineCommand;
..接口类型....
private FillColorCommand fillColor电脑怎样录屏Command;
public void setDrawLineCommand(DrawLineCommand drawLineCommand){
this.drawL接口卡ineCommand = drawLineComm电脑怎样恢复出厂设置and;
}
......
public void setFillColorCommand(FillColorCommand fillColorCommand){
this.f电脑开机黑屏illColorCommand = fillColor接口的效果Command;
}
public void drawLine(){
drawLineCommand.drawLine();
}
......
public void fillColor(){
fillColorCommand.fillColor();
}
}
Button button = new Button()电脑怎样截图;
button.drawLine电脑怎样截图();
button.fillColor();

总结

指令办法缺陷和大多数规划办法相同:类的胀大。每新增一个功用或许就会衍生许多类的创建,但这也是不行避接口卡免的问题。但规划办法就是为了更好的弱耦合性,灵敏控制性以及扩展性,牺牲必定类胀大并不是丧命的,比起代码可工作,后期代码可耐久维护和可读性,仍是有必要采用规划办法。不过实接口的效果践开发中仍是需求好好考虑是否必定需求规划办法。