Android开发经验谈Android开发Android技术知识

Android的设计模式-命令模式

2017-12-25  本文已影响529人  四月葡萄

前言

Android的设计模式系列文章介绍,欢迎关注,持续更新中:

Android的设计模式-设计模式的六大原则
一句话总结23种设计模式则
创建型模式:
Android的设计模式-单例模式
Android的设计模式-建造者模式
Android的设计模式-工厂方法模式
Android的设计模式-简单工厂模式
Android的设计模式-抽象工厂模式
Android的设计模式-原型模式
行为型模式:
Android的设计模式-策略模式
Android的设计模式-状态模式
Android的设计模式-责任链模式
Android的设计模式-观察者模式
Android的设计模式-模板方法模式
Android的设计模式-迭代器模式
Android的设计模式-备忘录模式
Android的设计模式-访问者模式
Android的设计模式-中介者模式
Android的设计模式-解释器模式
Android的设计模式-命令模式
结构型模式:
Android的设计模式-代理模式
Android的设计模式-组合模式
Android的设计模式-适配器模式
Android的设计模式-装饰者模式
Android的设计模式-享元模式
Android的设计模式-外观模式
Android的设计模式-桥接模式

1.定义

将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录日志,可以提供命令的撤销和恢复功能。

2.介绍

3.UML类图

命令模式UML类图.jpg
角色说明:

4.实现

就以关机为例子来实现命令模式。

4.1 创建命令角色

定义一个抽象的执行方法:

    public interface Command {
        void execute();//执行命令
    }
4.2 创建具体命令角色

创建一个关机命令:

    public class ShutdownCommand implements Command {//关机命令
        private Receiver receiver;//接受者

        public ShutdownCommand(Receiver receiver) {
            this.receiver = receiver;
        }

        @Override
        public void execute() {
            System.out.println("命令角色执行关机命令");
            receiver.action();//调用接受者
        }
    }
4.3 创建调用者角色
     public class Invoker {//调用者
        private Command command;

        public Invoker(Command command) {
            this.command = command;
        }

        public void action() {
            System.out.println("调用者执行命令");
            command.execute();
        }
    }
4.4 创建接收者角色

执行具体的关机操作:

    public class Receiver {
        public void action() {//接收者执行具体的操作
            System.out.println("接收者执行具体的操作");
            System.out.println("开始执行关机操作:");
            System.out.println("退出所有程序进程");
            System.out.println("关机~");
        }
    }
4.5 客户端测试:
     public void test() {
        Receiver receiver = new Receiver();//创建命令接收者
        Command command = new ShutdownCommand(receiver);//创建一个命令的具体实现对象,并指定命令接收者
        Invoker invoker = new Invoker(command);//创建一个命令调用者,并指定具体命令
        invoker.action();//发起调用命令请求
    }
输出结果:
调用者执行命令
命令角色执行关机命令
接收者执行具体的操作
开始执行关机操作:
退出所有程序进程
关机~
4.6 说明:

5. 应用场景

6. 优点

7. 缺点

8. Android中的源码分析

8.1 线程类

实际上Thread的使用就是一个简单的命令模式,先看下Thread的使用:

        new Thread(new Runnable() {
            @Override
            public void run() {
                //doSomeThing
            }
        }).start();

Threadstart()方法即命令的调用者,同时Thread的内部会调用Runnablerun(),这里Thread又充当了具体的命令角色,最后的Runnable则是接受者了,负责最后的功能处理。

8.2 Handler

另一个比较典型的常用到命令模式就是Handler了,这里就不贴代码了,简单分析下各个类的角色:

相关文章阅读
Android的设计模式-设计模式的六大原则
一句话总结23种设计模式则
创建型模式:
Android的设计模式-单例模式
Android的设计模式-建造者模式
Android的设计模式-工厂方法模式
Android的设计模式-简单工厂模式
Android的设计模式-抽象工厂模式
Android的设计模式-原型模式
行为型模式:
Android的设计模式-策略模式
Android的设计模式-状态模式
Android的设计模式-责任链模式
Android的设计模式-观察者模式
Android的设计模式-模板方法模式
Android的设计模式-迭代器模式
Android的设计模式-备忘录模式
Android的设计模式-访问者模式
Android的设计模式-中介者模式
Android的设计模式-解释器模式
Android的设计模式-命令模式
结构型模式:
Android的设计模式-代理模式
Android的设计模式-组合模式
Android的设计模式-适配器模式
Android的设计模式-装饰者模式
Android的设计模式-享元模式
Android的设计模式-外观模式
Android的设计模式-桥接模式

上一篇 下一篇

猜你喜欢

热点阅读