博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#观察者模式的实现的一点理解。
阅读量:5061 次
发布时间:2019-06-12

本文共 2463 字,大约阅读时间需要 8 分钟。

今天研究了一下c#观察者模式的实现。

我的理解那  不多说了,直接贴代码

代码如下 

using System;using System.Data;using System.Text;using System.Collections;using System.Collections.Generic;namespace  myStu{	/*	cicnor   2012-01-01 	   本章学习一下c#的观察者模式。	   实现的类包括, 老子,儿子   房地产商。	   房地产商 通知老子,你们家补偿1000万 。 老子把钱分给了大儿子400万 ,分给了二儿子400万	   大儿子拿钱买了一套房,二儿子用钱投资开了一家商店。	   	*/	/*		实际学习中碰到的问题		1 构造器的继承  ??	*/	/*		用到的知识点:		多态的实现 		观察者模式的实现		封装 : 比如 存款,和名字,我不想被其他人知道,但是有些人是可以知道的,但是他们要通过一定的途径财经知道。		继承 :	是为了代码公用,比如 构造器,名称,存款的操作,这些都是一样的,所以可以用继承		多态 : 老子有钱了,儿子有钱了,他们的行为是不一样的,但是都是有钱了的动作,这个就叫做多态。本例子是通过重写虚函数来实现的。		观察者模式 :老子开始分钱了,那么我就要告诉儿子,我要分钱给你们了, 					有一个疑问 : 儿子接受通知的这个事件名称是不是必须是相同的。不然老子怎么知道通过什么途径来让儿子知道了啊					1  方法名称要一样?					2  使用委托 ?					3 观察者的对象不一样,那么除了泛型 ,还有其他的实现方法吗?	*/	/*有时间把上边几个疑问研究一下!*/	class programe	{	   		static void Main(string[] arg)		{			try			{             			   	fathClass obj = new fathClass("老子") ;									obj.addobserver(new firstsonClass("大儿子"))  ;				obj.addobserver(new secsonClass("小儿子"))  ;				obj.income(10000) ;				obj.actionOfgetMoney() ;			}			catch (Exception err)			{				Console.WriteLine(err.Message);			}		}	}	//老子类,有钱了,我就分给我儿子钱。    class fathClass    {		public fathClass()		{}		private string name ;		public string GetName()		{			return name ;		}		public fathClass(string flag)		{			name = flag ;		}		private IList
objs = new List
() ; public void addobserver(fathClass obj) { objs.Add(obj) ; Console.WriteLine(name +"我有儿子了 他的名字是:"+obj.GetName()) ; } public void removeobserver(fathClass obj) { objs.Add(obj) ; Console.WriteLine(name +"我减少一个人") ; } private double disposit ; //存款金额 //收入 public void income(double value) { if (value <=0) { Console.WriteLine(name +"你是一个骗子,我的收入能是负数吗!") ; } this.disposit = this.disposit + value ; Console.WriteLine(name +"我收入了" + value.ToString()) ; Console.WriteLine(name +"我的存款还有" + disposit.ToString()) ; } //支出 public void pay(double value) { if (value <=0) { Console.WriteLine(name +"兄弟 你傻了,我支付负数是啥意思啊!") ; } if(this.disposit

运行结果如下

---------- run ----------=============== 运行C#程序 Write By cicnor===============老子我有儿子了 他的名字是:大儿子老子我有儿子了 他的名字是:小儿子老子我收入了10000老子我的存款还有10000老子我有2个儿子,我要把我的钱分给他们老子我支出了10000老子我的存款还有0大儿子我收入了10000大儿子我的存款还有10000大儿子我有钱,我要投资建立商铺小儿子我收入了10000小儿子我的存款还有10000小儿子我有钱,我要买一套住房=============== 程序结束 Copy cicnor 2001===============Output completed (0 sec consumed) - Normal Termination

转载于:https://www.cnblogs.com/sdgxbooy/archive/2012/01/01/8902894.html

你可能感兴趣的文章
JAR打包和运行
查看>>
session如何保存在专门的StateServer服务器中
查看>>
react展示数据
查看>>
测试计划
查看>>
idea设置自定义图片
查看>>
[高级]Android多线程任务优化1:探讨AsyncTask的缺陷
查看>>
选择器
查看>>
rownum 的使用
查看>>
Mysql与Oracle 的对比
查看>>
MVC系列博客之排球计分(三)模型类的实现
查看>>
npm安装
查看>>
阅读笔记02
查看>>
2019年春季学期第二周作业
查看>>
2014北邮计算机考研复试上机题解(上午+下午)
查看>>
mySQL 教程 第7章 存储过程和函数
查看>>
OGG同步Oracle到Kafka(Kafka Connect Handler)
查看>>
算法笔记_056:蓝桥杯练习 未名湖边的烦恼(Java)
查看>>
idea的maven项目无法引入junit
查看>>
jquery实现限制textarea输入字数
查看>>
thinkphp5 csv格式导入导出(多数据处理)
查看>>