angualr8观察者模式_观察者模式
用 C# 实现了示例并优化了一下:
Subject.cs
public class Subject
{
private readonly List _observers = new List();
private int _state;
public int State
{
get => _state;
set
{
_state = value;
NotifyAllObservers();
}
}
public void AddObserver(Observer observer)
{
observer.Subject = this;
_observers.Add(observer);
}
public void NotifyAllObservers() => _observers.ForEach(o => o.Update());
}
Observer.cs
public abstract class Observer
{
public Subject Subject;
public abstract void Update();
}
BinaryObserver.cs
public class BinaryObserver:Observer
{
public BinaryObserver()
{
}
public BinaryObserver(Subject subject)
{
subject.AddObserver(this);
}
public override void Update()
{
Console.WriteLine($"Binary String: {Convert.ToString(Subject.State, 2)}");
}
}
OctalObserver.cs
public class OctalObserver:Observer
{
public OctalObserver()
{
}
public OctalObserver(Subject subject)
{
subject.AddObserver(this);
}
public override void Update()
{
Console.WriteLine($"Octal String: {Convert.ToString(Subject.State, 8)}");
}
}
HexaObserver.cs
public class HexaObserver:Observer
{
public HexaObserver()
{
}
public HexaObserver(Subject subject)
{
subject.AddObserver(this);
}
public override void Update()
{
Console.WriteLine($"Hex String: {Convert.ToString(Subject.State, 16)}");
}
}
Demo.cs
public void NumberChange()
{
Subject subject1 = new Subject();
new BinaryObserver(subject1);
new OctalObserver(subject1);
new HexaObserver(subject1);
Console.WriteLine("1 state=15");
subject1.State = 15;
Console.WriteLine("1 state=10");
subject1.State = 10;
Subject subject2 = new Subject();
subject2.AddObserver(new BinaryObserver());
subject2.AddObserver(new OctalObserver());
subject2.AddObserver(new HexaObserver(subject1));
Console.WriteLine("2 state=15");
subject1.State = 15;
Console.WriteLine("2 state=10");
subject1.State = 10;
}
DHclly
DHclly
335***817@qq.com2年前 (2018-08-06)
angualr8观察者模式_观察者模式相关推荐
- python实现观察者模式_观察者模式--python
参见:http://baike.baidu.com/view/1854779.htm http://blog.csdn.net/huangkangying/article/details/790160 ...
- angualr8观察者模式_理解观察者模式——用Angular的httpClient来解释观察者
前言 本文关键词:观察者模式. 观察者模式是什么? 观察者模式和回调函数有什么关系? 使用httpClient时,加上.subscribe有什么作用? Angular的httpClient中如何体现观 ...
- java设计模式 观察者模式_理解java设计模式之观察者模式
在生活实际中,我们经常会遇到关注一个事物数据变化的情况,例如生活中的温度记录仪,当温度变化时,我们观察它温度变化的曲线,温度记录日志等.对于这一类问题,很接近java设计模式里面的"观察者模 ...
- 设计模式 -行为型模式_ 观察者模式Observer Pattern 之 JDK内置的实现
文章目录 概念 Code [主题] [观察者s] 观察者一 观察者二 [测试] 源码分析 java.util.Observable 目标类 java.util.Observer 观察者接口 notif ...
- java委托事件与观察者模式_多播委托与观察者模式联合使用,以及委托与事件的区别...
首先我们先看一下多播委托: 使用委托时,首先我们声明委托,委托语法一共有四种类型,分别时有参,无参,以及有无参数返回值. 1 public class DelegateShow //: System. ...
- java 观察者模式_图解Java设计模式之观察者模式
图解Java设计模式之观察者模式 天气预报项目需求 天气预报设计方案 1 - 普通方案 观察者模式(Observer)原理 观察者模式解决天气预报需求 观察者模式在JDK应用的源码分析 天气预报项目需 ...
- java 观察者模式_重学 Java 设计模式:实战观察者模式「模拟类似小客车指标摇号过程,监听消息通知用户中签场景」...
一.前言 知道的越多不知道的就越多 编程开发这条路上的知识是无穷无尽的,就像以前你敢说精通Java,到后来学到越来越多只想写了解Java,过了几年现在可能想说懂一点点Java.当视野和格局的扩大,会让 ...
- java 观察者模式_设计模式:全面通晓23种设计模式(典藏查阅)-第三部分
C.关系模式(11种) 先来张图,看看这11中模式的关系: 第一类:通过父类与子类的关系进行实现. 第二类:两个类之间. 第三类:类的状态. 第四类:通过中间类 父类与子类关系 13.策略模式(str ...
- java中线程观察者模式_设计模式之--观察者模式
在日常生活中,有很多需要我们关注的事务(比如,股市,楼市等),这些事务我们可以称之为主题或者叫信息发布者,观察主题的目的是想了解主题的变化(消息).一种方法当然是采用盯人策略,但这种方法有个固有的缺点 ...
最新文章
- Python自动化开发学习2
- “ static”关键字在课程中做什么?
- C++实现插入排序算法
- 永洪报表工具_该怎么选BI工具
- 【ngx-ueditor】百度编辑器按下Shift键不触发contentChange事件
- 本地文件上传、下载服务器文件事物码
- BCE loss和 CE理解
- 17道因为太难而被禁用的Google面试题
- java for i i 区别,i ++amp;和i ++之间的区别是什么? ++我在for循环(Java)?
- ANT自动化压缩合并JS/CSS和更改版本号
- 防止浏览器记住用户名及密码的简单实用方法
- YDOOK:STM32: 最新版选型手册下载 2021
- java gd库_PHP GD库是什么
- C++扫描指定主机开放的端口
- MySQLdb 安装小结
- 量化交易6-backtrader编写策略的时数据获取
- java小游戏 飞翔的小鸟,校园新手入门,分分钟带你玩转编程
- Android中处理大图片时图片压缩
- 保护健康早休息-人体器官作息时间表
- VARIATIONAL AUTOENCODER FOR SPEECH ENHANCEMENT WITH A NOISE-AWARE ENCODER