观察者模式(observer行为)c#简单的例子

几点:模式使观察目标和实现松耦合之间的依赖关系、通知会传播自己主动

样本:玩家击中后发生一系列变化的敌人:后发爆炸、敌人少1一个....

namespace adapterpattern
{
public partial class ObserverForm : Form
{
public ObserverForm()
{
InitializeComponent();
BaseData.EnemyNumber = 100;
} private void btnDisplay_Click(object sender, EventArgs e)
{ IObserver explosionEvent = new ExplosionEvent();//观察员1
IObserver enemy = new Enemy();//观察员2
player p1 = new player1();
p1.AddObserver(explosionEvent);
p1.AddObserver(enemy);
listBox1.Items.Add(p1.Display());
}
}
public static class BaseData//数据中转站
{
public static string DisplayString { get; set; }
public static int EnemyNumber { get; set; }
}
public abstract class player
{
List<IObserver> observers = new List<IObserver>();//观察员列表
protected virtual void Notify()//遂个通知观察员
{
foreach (IObserver observer in observers)
{
observer.Update();
}
}
public virtual void AddObserver(IObserver observer)//添加观察员
{
observers.Add(observer);
}
public virtual void Delet(IObserver observer)//删除观察员
{
observers.Remove(observer);
}
public abstract string Display();
}
public class player1 : player
{
public override string Display()
{
Notify();//通知观察员;
return BaseData.DisplayString + BaseData.EnemyNumber.ToString();
}
}
public interface IObserver//观察员接口
{
void Update();
}
public class ExplosionEvent : IObserver //观察员1
{
public void Update()
{
BaseData.DisplayString = "显示爆炸";
}
}
public class Enemy : IObserver //观察员2
{
public void Update()
{
BaseData.EnemyNumber -= 1; //"敌人数降低1个";
}
}
}

此文件由朱朱编写,转载请注明出自朱朱家园http://blog.csdn.net/zhgl7688

版权声明:本文博客原创文章。博客,未经同意,不得转载。

观察者模式(observer行为)c#简单的例子的更多相关文章

  1. 设计模式 ( 十六 ) 观察者模式Observer(对象行为型)

    设计模式 ( 十六 ) 观察者模式Observer(对象行为型) 1.概述 一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力.当对象们连接在一起时,它们就可以相互提供服务和信息. 通常来 ...

  2. [设计模式-行为型]观察者模式(Observer)

    一句话 事件监听就是观察者模式最好的例子. 概括

  3. 《JAVA设计模式》之观察者模式(Observer)

    在阎宏博士的<JAVA与模式>一书中开头是这样描述观察者(Observer)模式的: 观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.模型-视图(Mo ...

  4. 设计模式-观察者模式(Observer)

    简介: 观察者模式,也称为订阅-发布模式,定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖他的对象都得到通知并被自动更新. 主要由以下几个部分组成: a.Subject目标对象. ...

  5. 观察者模式 Observer 发布订阅模式 源 监听 行为型 设计模式(二十三)

    观察者模式 Observer 意图 定义对象一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖他的对象都得到通知并自动更新. 别名:依赖(Dependents),发布订阅(Publish-Su ...

  6. 8.5 GOF设计模式四: 观察者模式Observer

    GOF设计模式四: 观察者模式Observer  现实中遇到的问题  当有许多不同的客户都对同一数据源感兴趣,对相同的数据有不同的处理方式,该如 何解决?5.1 定义: 观察者模式  观察者模式 ...

  7. 设计模式 笔记 观察者模式 Observer

    //---------------------------15/04/27---------------------------- //Observer 观察者模式----对象行为型模式 /* 1:意 ...

  8. Java 设计模式系列(十五)观察者模式(Observer)

    Java 设计模式系列(十五)观察者模式(Observer) Java 设计模式系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Java ...

  9. 简单的例子了解自定义ViewGroup(一)

    在Android中,控件可以分为ViewGroup控件与View控件.自定义View控件,我之前的文章已经说过.这次我们主要说一下自定义ViewGroup控件.ViewGroup是作为父控件可以包含多 ...

随机推荐

  1. 努比亚 Z5 mini刷机包 omni4.4.2改动V4.0 自用版 精简 MIUI特效

    ROM介绍: 第一版: 1.基于lwang适配的omni4.4.2第二版改动,少量精简改动 2.设置加入"自启项管理",体验更快.更顺滑 3.替换特效为XUI特效 4.改动host ...

  2. C#获取FTP文件详细备注信息

    private void button1_Click(object sender, RoutedEventArgs e) { Uri uri = new Uri("ftp://192.168 ...

  3. HDU 2504 又见GCD

    又见GCD Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  4. 蚁群算法和简要matlab来源

    1 蚁群算法原理 从1991由意大利学者 M. Dorigo,V. Maniezzo 和 A. Colorni 通过模拟蚁群觅食行为提出了一种基于群体的模拟进化算法--蚁群优化.极大关注,蚁群算法的特 ...

  5. ASP.NET MVC源码分析

    MVC4 源码分析(Visual studio 2012/2013) HttpModule中重要的UrlRoutingModule 9:this.OnApplicationPostResolveReq ...

  6. C#生成PDF页脚第几页共几页

    C#生成PDF页脚第几页共几页 分类: .net 2012-06-06 21:04 2842人阅读 评论(3) 收藏 举报 c#stringfontsfileheaderwindows 我在网上找了好 ...

  7. C# 6.0 (C# vNext) 的新功能:Expression Bodied Functions and Properties

    Expression Bodied Function 它可以用在: methods user-defined operators type conversions read-only properti ...

  8. git 常用命令及问题解决(转)

    git init 产生的目录解释error: src refspec master does not match any.引起该错误的原因是,目录中没有文件,空目录是不能提交上去的error: ins ...

  9. sails不是内部或外部命令的解决方案

    1 安装好node 2 安装sails 打开cmd窗口,用命令 npm -g install sails 安装sails 安装完成后,用命令  sails new testProject 创建项目 会 ...

  10. 如何插上U盘 自动复制内容

    U盘插入自动复制,有效对付那些不肯给PPT的老师,还有一定几率拿到期末考试卷子···有图有真相!业界良心的好东西!!现在看还来得及!!! 代码优化了一下,把不是很重要的都删掉了,这次使用时看不出任何现 ...