栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

设计模式-观察者模式

设计模式-观察者模式

package com.example.kafka.notify;

import java.util.ArrayList;
import java.util.List;


public abstract class Subject {

    private List list = new ArrayList<>();

    
    public void addObserver(Observer obj){
        list.add(obj);
    }

    
    public void deleteObserver(Observer obj){
        list.remove(obj);
    }

    
    public void notifyAllObserver(){
        for (Observer obj:list) {
            obj.update(this);
        }
    }
    
}

具体主题角色

package com.example.kafka.notify;


public class GameSubject extends  Subject{
    private String name;
    private String content;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public GameSubject(String name, String content) {
        super();
        this.name = name;
        this.content = content;
    }
    public void sendSubject(GameSubject sub){
        sub.notifyAllObserver();
    }
}

抽象观察者

package com.example.kafka.notify;


public interface Observer {

    public void update(Subject sub);
}

 具体观察者角色

package com.example.kafka.notify;

import ch.qos.logback.core.net.SyslogOutputStream;


public class GamePlay implements Observer{
    @Override
    public void update(Subject sub) {
        GameSubject subject = (GameSubject) sub;
        String content = subject.getContent();
        if (content != null){
            content = content.toLowerCase();
        }
        if(content.contains("pc")){
            System.out.println("PC玩家: 我这个主题非常感兴趣!");
        } else {
            System.out.println("我对这个主题不感兴趣!");
        }
        System.out.println("本次游行主题发布者:"+subject.getName());


    }
}

测试

public static void main(String[] args) {
        String name = "jack";
        String content="英雄联盟手游版+PC版";
        GameSubject gameSubject = new GameSubject(name, content);
        Observer observer = new GamePlay();
        gameSubject.addObserver(observer);
        gameSubject.sendSubject(gameSubject);
}

执行结果

PC玩家: 我这个主题非常感兴趣!
本次游行主题发布者:jack

学无止境~~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/744919.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号