设计模式_命令模式
2015-10-20 11:27
351 查看
/** * 定义:在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理, * 这种无法抵御变化的紧耦合是不合适的 * 。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)。 * */ /** *命令模式组成:1.抽象命令;2、命令的执行者;3、命令的控制着 */ /** *命令的执行者 */ class Excuer{ void commondA(){} void commondB(){} void commondC(){} } /** *抽象命令 */ interface Commond{ public void excute(); } /** *具体命令类A */ class CommondA implements Commond{ private Excuer excuer; public CommondA(Excuer _Excuer) { excuer = _Excuer; } @Override public void excute() { // TODO Auto-generated method stub System.out.println("CommondA"); excuer.commondA(); } } /** *具体命令类B */ class CommondB implements Commond{ Excuer excuer; public CommondB(Excuer _Excuer) { excuer = _Excuer; } @Override public void excute() { // TODO Auto-generated method stub System.out.println("CommondB"); excuer.commondB(); } } /** *具体命令类C */ class CommondC implements Commond{ Excuer excuer; public CommondC(Excuer _Excuer) { excuer = _Excuer; } @Override public void excute() { // TODO Auto-generated method stub System.out.println("CommondC"); excuer.commondC(); } } /** *命令的协调控制者 */ class Invoker{ Commond commond_a,commond_b; void setCommond(Commond _commond,Commond comm) { commond_a = _commond; commond_b = comm; } //commond a void commondA(){ commond_a.excute(); } //commond b void commondB(){ commond_b.excute(); } } /** * 命令模式 */ public class Pattern_03_Command { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Excuer excuer = new Excuer();// receriver Commond commond_a = new CommondA(excuer); Commond commond_b = new CommondB(excuer); Invoker invoker = new Invoker(); invoker.setCommond(commond_a, commond_b); invoker.commondA(); invoker.commondB(); } }
相关文章推荐
- iPhone6 Plus、iPhone6、iPhone5S和之前版本真实分辨率
- 一键拨打
- 【HDOJ】3726 Graph and Queries
- 编译libgd
- im Game nim游戏
- Thinking in Java 第二章 一切都是对象
- Binary Classfication: Credit risk prediction
- 简单的递归打印阶乘
- dba,user,v$等开头的常用表和视图
- android之TextView使用HTML处理字体样式、显示图片等
- 程序员入行须知
- 程序员 = 态度 ? 码农 : 码奴;
- 查看tablespace的使用情况
- 函数返回值类型为枚举类型
- CentOS6.5安装VNC
- spring AOP @Around @Before @After 区别
- web前端框架
- Xcode使用教程详细讲解(下)
- Python实现TCP代理
- yii2发送邮件(配置QQ版本)