网站开发工程师薪资待遇,服务类型网站开发需要哪些技术,wordpress主题安装报错,有哪些网站做的很好文章目录 一、命令模式定义二、例子2.1 菜鸟教程例子2.1.1 定义命令类接口2.1.2 定义命令执行者2.1.3 被处理对象Stock。2.1.4 封装处理Stock的命令 2.2 JDK源码——Runnable2.2.1 命令接口2.2.2 命令处理者2.2.3 命令实现类 2.3 SpringMVC——Controller2.3.1 请求对象 handle… 文章目录 一、命令模式定义二、例子2.1 菜鸟教程例子2.1.1 定义命令类接口2.1.2 定义命令执行者2.1.3 被处理对象Stock。2.1.4 封装处理Stock的命令 2.2 JDK源码——Runnable2.2.1 命令接口2.2.2 命令处理者2.2.3 命令实现类 2.3 SpringMVC——Controller2.3.1 请求对象 handler2.3.2 请求执行者 HandlerAdapter 三、其他设计模式 一、命令模式定义
类型 行为型模式 目的 将一个请求封装成一个对象从而使您可以用不同的请求对客户进行参数化。
二、例子
2.1 菜鸟教程例子
2.1.1 定义命令类接口
public interface Order {void execute();
}2.1.2 定义命令执行者
import java.util.ArrayList;
import java.util.List;public class Broker {private ListOrder orderList new ArrayListOrder(); public void takeOrder(Order order){orderList.add(order); }public void placeOrders(){for (Order order : orderList) {order.execute();}orderList.clear();}
}2.1.3 被处理对象Stock。
菜鸟教程定义被处理的对象是Stock。
public class Stock {private String name ABC;private int quantity 10;public void buy(){System.out.println(Stock [ Name: name, Quantity: quantity ] bought);}public void sell(){System.out.println(Stock [ Name: name, Quantity: quantity ] sold);}
}2.1.4 封装处理Stock的命令
public class BuyStock implements Order {private Stock abcStock;public BuyStock(Stock abcStock){this.abcStock abcStock;}public void execute() {abcStock.buy();}
}public class SellStock implements Order {private Stock abcStock;public SellStock(Stock abcStock){this.abcStock abcStock;}public void execute() {abcStock.sell();}
}2.2 JDK源码——Runnable
虽然 Runnable 接口本身并不是一个命令模式的实现但结合Thread和自定义的Runnable 实现类可以认为它运用了命令模式。
2.2.1 命令接口
public interface Runnable {public abstract void run();
}
2.2.2 命令处理者 public class Thread implements Runnable {private Runnable target;public synchronized void start() {if (threadStatus ! 0)throw new IllegalThreadStateException();
group.add(this);
boolean started false;try {start0();started true;} finally {try {if (!started) {group.threadStartFailed(this);}} catch (Throwable ignore) {}}}private native void start0();
}2.2.3 命令实现类
public class OrderThread {public void run(){//todo}
}2.3 SpringMVC——Controller
个人认为Controller也是运用了命令模式。
2.3.1 请求对象 handler
2.3.2 请求执行者 HandlerAdapter
HandlerAdapter光看名字就知道运用了适配模式我们就看handle方法部分就好了。
public class SimpleControllerHandlerAdapter implements HandlerAdapter {public SimpleControllerHandlerAdapter() {}public boolean supports(Object handler) {return handler instanceof Controller;}Nullablepublic ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return ((Controller)handler).handleRequest(request, response);}public long getLastModified(HttpServletRequest request, Object handler) {return handler instanceof LastModified ? ((LastModified)handler).getLastModified(request) : -1L;}
} 三、其他设计模式
创建型模式 结构型模式
1、设计模式——装饰器模式Decorator Pattern Spring相关源码
行为型模式
1、设计模式——访问者模式Visitor Pattern Spring相关源码2、设计模式——中介者模式Mediator Pattern JDK相关源码3、设计模式——策略模式Strategy Pattern Spring相关源码4、设计模式——状态模式State Pattern5、设计模式——观察者模式Observer Pattern Spring相关源码6、设计模式——备忘录模式Memento Pattern7、设计模式——模板方法模式Template Pattern Spring相关源码8、设计模式——迭代器模式Iterator Pattern Spring相关源码