设计模式-观察者模式(List列表维护观察者)
namespace ConsoleApplication1
{
interface IObserver
{
void ReceiveMsg(string msg);
}
class Observer : IObserver
{
string Key;
public Observer(string key)
{
this.Key = key;
}
public void ReceiveMsg(string msg)
{
Console.WriteLine("Observer-" + Key + " 收到消息:" + msg);
}
}
interface ISubject
{
void AddObserver(IObserver ob);
void DelObserver(IObserver ob);
void Notify(string msg);
}
class Subject : ISubject
{
List<IObserver> observerList = new List<IObserver>();
public void AddObserver(IObserver ob)
{
if (!observerList.Contains(ob))
observerList.Add(ob);
}
public void DelObserver(IObserver ob)
{
if (observerList.Contains(ob))
observerList.Remove (ob);
}
public void Notify(string msg)
{
foreach (IObserver ob in observerList)
{
ob.ReceiveMsg(msg);
}
}
}
class Child : Subject
{
public void Cry()
{
Notify("孩子哭了");
}
public void Smile()
{
Notify("孩子笑了");
}
}
class Program
{
static void Main(string[] args)
{
IObserver ob_father = new Observer("Father");
IObserver ob_mather = new Observer("Mather");
Child child = new Child();
child.AddObserver(ob_father);
child.AddObserver(ob_mather);
child.Cry();
Console.ReadLine();
Console.WriteLine("父亲外出国打工了..");
child.DelObserver(ob_father);
child.Smile();
Console.ReadLine();
}
}
}
设计模式-观察者模式(List列表维护观察者)的更多相关文章
- 【设计模式】Java设计模式 - 观察者模式
[设计模式]Java设计模式 - 观察者模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 @一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长 ...
- [Head First设计模式]山西面馆中的设计模式——观察者模式
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 引言 不知不自觉又将设计模式融入生活了,吃个饭也不得安生,也发现生活中的很多场景,都可以用设计模式来模拟.原来设计模式就在 ...
- c#设计模式-观察者模式
Observer 与 Subject 互为耦合,但是这种耦合的双方都依赖于抽象,而不依赖于具体. 一.观察者模式 目的 我们都知道解决一个问题有N种解决方式,但在面向对象的设计中如何能做到“高内聚,低 ...
- java设计模式--观察者模式(Observer)
java设计模式--观察者模式(Observer) java设计模式--观察者模式(Observer) 观察者模式的定义: 定义对象间的一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的 ...
- Android设计模式-观察者模式
原文地址 http://blog.csdn.net/qq_25806863/article/details/69218968 观察者模式是一种使用频率非常高的设计模式,最常用的地方就是订阅-发布系统. ...
- 设计模式-观察者模式(Observer Pattern)
观察者模式(Observer Pattern):定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己. 观察者 ...
- 18. 星际争霸之php设计模式--观察者模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- linkin大话设计模式--观察者模式
linkin大话设计模式--观察者模式 观察者模式定义了对象间的一对多依赖关系,让一个或者多个观察者观察一个对象主题.当主题对象的状态发生改变的时候,系统能通知所有的依赖于此对象的观察者对象,从而能自 ...
- js设计模式-观察者模式
定义: 观察者模式又叫发布订阅模式,它定义了对象间的一种一对多的依赖关系.观察者模式让两个对象松耦合地联系在一起,虽然不太清楚彼此的细节,但这不影响他们之间的互相通信. 思路 定义一个对象,在对象中实 ...
随机推荐
- mac搭建mamp环境
1 先安装homebrew; 执行:cd /usr/local; 非root用户执行: ruby -e "$(curl -fsSL https://raw.githubusercontent ...
- 阿里巴巴高新能数据源com.alibaba.druid.pool.DruidDataSource的jar包配置
aspectjweaver-1.7.4.jar druid-0.2.9.jar 两个包,用于提供com.alibaba.druid.pool.DruidDataSource
- iOS-- 快速集成iOS基于RTMP的视频推流
效果图 iTools有点卡, 但是推到服务器倒是很快的. 推流 前言 这篇blog是iOS视频直播初窥:<喵播APP>的一个补充. 因为之前传到github上的项目中没有集成视频的推流.有 ...
- 简单解释CDATA
在网页源代码中,经常会看见如下代码: <![CDATA[其他内容]]>,其中其他内容一般是脚本. 为什么要用这个标签? 这个标签的意思是Character-Data,即字符数据. 目的,告 ...
- SharePoint 2013 本地开发解决方案以及远程调试
转自:http://www.cnblogs.com/jianyus/p/3523387.html 在SharePoint开发中,我们需要在部署有SharePoint环境的服务器中开发,这是一件让人很苦 ...
- 十天冲刺---Day10
站立式会议 站立式会议内容总结: 燃尽图 照片 没课的周三,队员们共同在活动室奋战了一个下午 继续保持迭代,在周六前完成alpha版本
- Beta版冲刺Day1
会议讨论: 628: 已经成功实现了文件的上传功能,但是按钮的布局有点不好看.未完成的功能有:修改老师信息时候弹出小窗口进行修改. 601: 目前还在解决剩下的问题,比如将 ...
- 使用Servlet实现下载文件的功能
在前台有一个下载链接,比如 <a href="DownLoadServlet">下载</a> <br/> 使用Servlet实现下载: impo ...
- Linux System and Performance Monitoring
写在前面:本文是对OSCon09的<Linux System and Performance Monitoring>一文的学习笔记,主要内容是总结了其中的要点,以及加上了笔者自己的一些理解 ...
- [转]js中confirm实现执行操作前弹出确认框的方法
原文地址:http://www.jb51.net/article/56986.htm 本文实例讲述了js中confirm实现执行操作前弹出确认框的方法.分享给大家供大家参考.具体实现方法如下: 现在在 ...