美文网首页
移动架构--5.观察者模式、命令模式

移动架构--5.观察者模式、命令模式

作者: 小小秤 | 来源:发表于2018-08-07 13:30 被阅读0次

1.观察者模式
观察者模式涉及到被观察者,观察者,当被观察者变化的时候通知观察者进行响应。一个最简单的例子,报纸的订阅,被观察者变化引起监听者变化。

//1.观察者接口
public interface Listener{
 void readNews(String content);
}
//2.被观察者
public class Paper{
  private List<Listener> listeners = null;
  public Paper(){
    listeners = new ArrayList<Listener>();
  }
//被观察者,保存观察者的实例对象
  public addListener(Listener listener){
    listeners.add(listener);
  }
  public removeListener(Listener listener){
    listeners.remove(listener);
  }
  //被观察者发生变化,通知观察者
  public void publishNews(String content){
     for(Listener listener: listeners){
         listener.readNews(content);
     }
  }
}
//3.观察者
public class PersonA implements Listener{
  @Override
  public void readNews(String content){
    System.out.println(content);
  }
}
//4.客户端调用
public class Client{
  public static void main(String[] args){
    Paper paper = new Paper();
    PersonA person1 = new PersonA();
    PersonA person2 = new PersonA();
    paper.addListener(person1);
    paper.addListener(person2);
    paper.publishNews("好消息,好消息!")
  }
}

2.命令模式
命令模式包括发送命令者,接收命令者、命令的抽象接口和命令的具体实现类。

//1.命令的抽象接口
public interface Command{
  void doCommand(){
  }
}
//2.命令接收者
public class Receiver{
  public void receiveDoA(){
  //执行具体的操作
  }
  public void receiveDoB(){
  //执行具体的操作
  }
}
//3.具体的命令
public class CommandImplA implements Command{
  private Receive receiver;
  public CommandImplA(Receiver receiver){
      this.receiver = receiver;
  }
  @Override
  void doCommand(){
     receive.receiveDoA();
  }
}
public class CommandImplB implements Command{
  private Receive receiver;
  public CommandImplB(Receiver receiver){
      this.receiver = receiver;
  }
  @Override
  void doCommand(){
     receive.receiveDoB();
  }
}
//4.命令的发送者
public class Sender{
  private Command command;
  public Sender(Command command){
    this.command = command;
  }
  public void sendCommand(){
    command.doCommand();
  }
}
//5.客户端使用
public class Client{
  public static void main(String[] args){
    Receiver receiver = new Receiver();
    CommandImplA cmdA = new CommandImplA(receive);
    CommandImplB cmdB = new CommandImplB(receive);
    Sender sender = new Sender(cmdA);
    sender.sendCommand();
  }
}

命令模式是将接收者要做的事情,抽象成命令,通过命令来解耦。在具体的命令中,用命令所引用的接收者实例进行相应的操作。命令的发送者负责发送各种命令。

相关文章

  • 移动架构--5.观察者模式、命令模式

    1.观察者模式观察者模式涉及到被观察者,观察者,当被观察者变化的时候通知观察者进行响应。一个最简单的例子,报纸的订...

  • Java设计模式

    1.策略模式 2.观察者模式 3.装饰者模式 4.工厂模式 5.单件模式 6.命令模式 7.适配器模式与外观模式 ...

  • Android 常见的六大设计模式

    观察者模式 适配器模式 代理模式 工厂模式 单例模式 命令模式 1.观察者模式(Observer Pattern)...

  • Vi编辑器

    命令模式 文本输入模式 末行模式。 插入模式 移动光标: 删除命令: 撤销命令: 重复命令 文本行移动: 复制粘贴...

  • 武汉理工大学 软件设计与体系结构 32设计模式 整理

    这个部分内容比较多,单独开一章来整理 32.掌握:1.命令模式2.状态模式,3.装饰模式,4.观察者模式,5.策略...

  • Summary of February 2017

    READING Head First 设计模式:完成50%。内容:观察者模式、装饰者模式、工厂模式、单件模式、命令...

  • 常用设计模式 2018-09-15

    目录 代理模式 单例模式 命令模式 工厂模式 桥接模式 策略模式 装饰模式 观察者模式 门面模式 代理模式 静态代...

  • vi的常用命令

    命令模式 与 编辑模式切换 尾行模式操作 命令模式操作光标移动 查找 命令模式下,输入 /word 后回车,即查找...

  • GOF23(java设计模式)--行为型模式

    职责链模式、迭代器模式、中介者模式、命令模式、解释器模式、访问者模式、策略模式、模版方法模式、状态模式、观察者模式...

  • 设计模式| 行为型模式 (下)

    前言 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代器模式、解释器模式、责任链模式、命令模式、备忘...

网友评论

      本文标题:移动架构--5.观察者模式、命令模式

      本文链接:https://www.haomeiwen.com/subject/majovftx.html