当前位置: 首页 > news >正文

商丘网站建设.com站长工具seo排名查询

商丘网站建设.com,站长工具seo排名查询,网站制作的大公司,域名格式正确的是文章目录 前言一、观察者1.定义一个观察者接口2.察者接口具体实现类 二、主题1.定义一个主题接口2.主题接口具体实现类 三、枚举维护观察者1.定义枚举类维护观察者 四、观察者模式测试1.定义观察者模式测试接口2.观察者模式测试运行结果 前言 本文介绍使用枚举的方式实现的观察…

文章目录

  • 前言
  • 一、观察者
    • 1.定义一个观察者接口
    • 2.察者接口具体实现类
  • 二、主题
    • 1.定义一个主题接口
    • 2.主题接口具体实现类
  • 三、枚举维护观察者
    • 1.定义枚举类维护观察者
  • 四、观察者模式测试
    • 1.定义观察者模式测试接口
    • 2.观察者模式测试运行结果


前言

本文介绍使用枚举的方式实现的观察者模式,简单易用,容易维护,非常适合日常的开发使用。


一、观察者

1.定义一个观察者接口

//  定义一个观察者接口,用于观察主题对象的状态变化
public interface Observer {// 发布消息void update(String message);}

2.察者接口具体实现类

package com.jareny.jave.design.observer.object.base;//  实现观察者接口的具体类,用于观察主题对象的状态变化
public class ConcreteObserver implements Observer{@Overridepublic void update(String message) {System.out.println("观察到主题对象的状态变化,具体类收到通知:" + message);}
}

二、主题

1.定义一个主题接口

package com.jareny.jave.design.observer.object.base;//  定义一个主题接口,被观察者接口,用于通知观察者对象状态变化
public interface Subject {//  注册观察者void registerObserver(Observer observer);//  删除观察者void removeObserver(Observer observer);//  通知观察者void notifyObservers(String message);}

2.主题接口具体实现类

package com.jareny.jave.design.observer.object.base;import java.util.ArrayList;
import java.util.List;//  实现主题接口,被观察者接口的具体类,用于通知观察者对象状态变化
public class ConcreteSubject implements Subject {private List<Observer> observers = new ArrayList<>();@Overridepublic void registerObserver(Observer observer) {observers.add(observer);}@Overridepublic void removeObserver(Observer observer) {observers.remove(observer);}@Overridepublic void notifyObservers(String message) {observers.forEach(observer->observer.update(message));}}

三、枚举维护观察者

1.定义枚举类维护观察者

package com.jareny.jave.design.observer.object.enums;import com.jareny.jave.design.observer.object.base.ConcreteObserver;
import com.jareny.jave.design.observer.object.base.Observer;
import com.jareny.jave.design.observer.object.base.Subject;
import lombok.AllArgsConstructor;
import lombok.Getter;import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;@Getter
@AllArgsConstructor
public enum ObserverEnum {/*** 第一个观察者*/Observer1("张三","学生"){@Overridepublic void register(Subject subject) {// 创建观察者对象1Observer observer = new ConcreteObserver();// 主题对象注册观察者对象1subject.registerObserver(observer);}},/*** 第二个观察者*/Observer2("李四","老师"){@Overridepublic void register(Subject subject) {// 创建观察者对象2Observer observer = new ConcreteObserver();// 主题对象注册观察者对象2subject.registerObserver(observer);}},;//  名称private String name;//  类型private String type;/*** 注册观察者* @param subject*/public abstract void register(Subject subject);/*** 获取所以的观察者* @return*/public static List<ObserverEnum> getObserverEnumList(){return Stream.of(values()).collect(Collectors.toList());}}

四、观察者模式测试

1.定义观察者模式测试接口


package com.jareny.jave.design.observer.object.enums;import com.jareny.jave.design.observer.object.base.ConcreteObserver;
import com.jareny.jave.design.observer.object.base.ConcreteSubject;
import com.jareny.jave.design.observer.object.base.Observer;
import com.jareny.jave.design.observer.object.base.Subject;import java.util.List;public class ObserverEnumExample {public static void main(String[] args) {// 创建主题对象Subject subject = new ConcreteSubject();// 创建观察者对象列表List<ObserverEnum> observerEnumList = ObserverEnum.getObserverEnumList();// 观察者对象全部注册到主题对象observerEnumList.forEach(observer->observer.register(subject));// 主题对象通知所有观察者对象状态变化subject.notifyObservers("主题对象状态发生变化!");}
}

使用枚举,将观察者注册到订阅的主题种


2.观察者模式测试运行结果

运行程序,得到以下结果

观察到主题对象的状态变化,具体类收到通知:主题对象状态发生变化!
观察到主题对象的状态变化,具体类收到通知:主题对象状态发生变化!
http://www.zhongyajixie.com/news/61328.html

相关文章:

  • 合肥中小型企业网站建设方案模板企业邮箱怎么开通注册
  • 网站建设公司华网天下买赠两年网络营销策划的基本原则是什么
  • 移动端网站生成器网络推广搜索引擎
  • 在线购物系统的分析与设计重庆seo代理计费
  • 新网站建设平台找客户的软件有哪些
  • 织梦网站地图如何做韶关新闻最新今日头条
  • 长春做网站建设的公司山东seo百度推广
  • 网站长尾词怎么做成都最新热门事件
  • 包装设计网站欣赏免费行情软件网站大全
  • 文化管 网站建设规划今日头条新闻推荐
  • 深圳十大网站建设nba在线直播免费观看直播
  • 我的网站模板下载江苏网站建设制作
  • wordpress nofollow插件郑州做网络优化的公司
  • 网站备案密码怎么找回搜索引擎排名优化方法
  • wordpress留言版苏州seo按天扣费
  • 网站策划素材免费建站免费网站
  • 网站制作咨询电话seo外包方案
  • 专业信息门户网站建设石家庄网站建设方案优化
  • 网站建设 实训网页制作软件免费版
  • iapp怎么把网站做软件注册网站流程和费用
  • wordpress 301重定向 www站长seo综合查询工具
  • wordpress文章列表分页安卓手机优化软件排名
  • 专业电商网站建设防控措施持续优化
  • 美国建设网站的条款b2b免费推广网站
  • 潍坊专升本考点搜索关键词排名优化技术
  • 神华公司两学一做网站接app推广的单子在哪接
  • 网站收录查询方法优化设计电子课本下载
  • 帮企业做网站赚钱百度北京总部电话
  • 澳洲同城app下载企业seo关键词优化
  • 凤阳做网站怎么找专业的营销团队