观察者模式(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. Thinkpad X200 屏幕备案

    妈妈蛋,屏幕废物前几天(闪屏->暗->变暗),因此,它只能监视房外 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjk2NTg5MA= ...

  2. ACdream原创群赛(18)のAK's dream题解

    只做了4题水题ADGI A题需要注意的就是“[...]”的输出了,何时输出,何时不输出. #include <stdio.h> int main() { int n, cur, d; ; ...

  3. CheckBoxList的操作查询是否被选中设置或者得到

    在项目中我们可能会经常遇到一收集多选信息的情况,比如做注册的时候要收集个人爱好,那时候大家第一个想到的肯定是CheckBoxList.那我们怎么来获取到CheckBoxList的值并且存入数据库呢?? ...

  4. crm2011js子网格导航栏字段事件操作

  5. IOS开发-表视图LV3导航控制器

    学到这里感觉有点难了,其实这篇文章再草稿箱里放了好久了~ 最近对于学习的热情下降了.这不行-抓紧学习走起! 在这一章节的学习中主要针对导航控制器及表视图来建立多视图的应用, 首先要了解一些概念-- 1 ...

  6. spring 重定向以及转发 乱码问题解决

    1.spring 转发 request.setAttribute("id", id); request.setAttribute("name",name); r ...

  7. 《Linux Device Drivers》 第十七章 网络驱动程序——note

    基本介绍 第三类是标准的网络接口Linux设备,本章介绍的内核,其余的交互网络接口描述 网络接口,必须使用特定的内核数据结构本身注册,与外部分组交换数据线打电话时准备 经常使用的文件上的网络接口操作是 ...

  8. singleton pattern

    1 normal mode class Singleton { private Singleton(){}; Singleton singleton; static Singleton getInst ...

  9. Tomcat启动错误,端口占用

    错误信息: Several ports (8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. The ...

  10. Android应用性能測试

    Android内存限制 java虚拟机有内存使用上限的限制 adb shell进入手机,这此參数被纪录在/system/build.prop中,假设想直接查看能够使用adb shell getprop ...