设计模式之观察者模式

该文章演示了如何使用Java实现观察者模式。定义了一个Observer接口,粉丝观察者FansObserver实现此接口来接收消息。Uploader类作为发布者,维护一个粉丝列表(观察者列表),可以添加、移除观察者,并发送消息。在测试用例中,创建了多个粉丝观察者并发布消息,然后在第二个测试中移除了一个观察者并再次发送消息,展示了动态管理观察者的能力。
摘要由CSDN通过智能技术生成

1.声明一个接口

//观察者
public interface Observer {
    void receive(String message);
}

2.实现类

//粉丝观察者
public class FansObserver implements Observer{
private String name;

    public FansObserver(String name) {
        this.name = name;
    }
//接受消息
    @Override
    public void receive(String message) {
        System.out.println(name+"收到消息:"+message);
    }
}

3.up主

//up主
public class Uploader {
    /**
     * 粉丝列表(观察者列表)
     */

   private List<Observer> observers=new ArrayList<>();
   private String message;
/**
 * 关注observer
 */

   public void addObservers(Observer observer){
       observers.add(observer);
   }
//取关observer
    public void removeObservers(Observer observer){
        observers.remove(observer);
    }
    //发布作品message
public void sendMessage(String message){
    this.message = message;
    notifyObserver();
}
//通知粉丝
private void notifyObserver(){
       for(Observer observer:observers){
           observer.receive(message);
       }
}
}

4.测试

@Test
public void test01 {
    Uploader uploader = new Uploader();
    FansObserver fansObserver1= new FansObserver("光头强");
    FansObserver fansObserver2= new FansObserver("熊大");
    FansObserver fansObserver3= new FansObserver("熊二");

    uploader.addObservers(fansObserver1);
    uploader.addObservers(fansObserver2);
    uploader.addObservers(fansObserver3);
    uploader.sendMessage("你太漂亮了");
}

@Test
public void test02 {
    Uploader uploader = new Uploader();
    FansObserver fansObserver1= new FansObserver("光头强");
    FansObserver fansObserver2= new FansObserver("熊大");
    FansObserver fansObserver3= new FansObserver("熊二");

    uploader.addObservers(fansObserver1);
    uploader.addObservers(fansObserver2);
    uploader.addObservers(fansObserver3);
    uploader.sendMessage("你太漂亮了");
    System.out.println("=======熊二被取关后==========");
    uploader.removeObservers(fansObserver3);
    uploader.sendMessage("观察者模式");
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值