现在的位置: 首页 > 综合 > 正文

观察者模式

2018年04月09日 ⁄ 综合 ⁄ 共 1260字 ⁄ 字号 评论关闭
最近在看兄弟连的java课程,只提取里面讲解设计模式的视频,一下是用c#实现的视频中用描述的观察者模式
using System;
using System.Collections.Generic;
 
namespace howar.Patterns.Observer{
	public class Test{
		public static void Main(String [] args){
			Doll d = new Doll(3000);
			Penson p1 = new Penson("張三");
			Penson p2 = new Penson("李四");
			d.RegisterObserver(p1);
			d.RegisterObserver(p2);
			Console.WriteLine("第一輪調整價格。");
			d.Price = 2899;
			Console.WriteLine("第二輪調整價格。");
			d.Price = 2499;
			Console.WriteLine("第三輪調整價格。");
			d.Price = 2099;
			d.RemoveObserver(p2);
			Console.WriteLine("第四輪調整價格。");
			d.Price = 1688;
		}
	}

	public interface ISubject{
		void RegisterObserver(IObserver o);
		void RemoveObserver(IObserver o);
		void NotifyObservers();
	}

	public interface IObserver{
		void update(float price);
	}

	public class Doll : ISubject{
		private float price;
		public Doll(float price){
			this.price = price;
			Console.WriteLine("娃娃初始設定價格成:"+price);
		}
		public float Price{
			set
			{
				this.price = value;
				NotifyObservers();
			}
			get
			{
				return this.price;
			}
		}
		private	List<IObserver> l = new List<IObserver>();
		public void RegisterObserver(IObserver o){
			l.Add(o);
		}
		public void RemoveObserver(IObserver o){
			l.Remove(o);
		}
		public void NotifyObservers(){
			foreach(IObserver o in l){
				o.update(price);				
			}
		}
	}

	public class Penson : IObserver{
		private String name;
		public Penson(String name){
			this.name = name;			
		}
		public void update(float price){
			Console.WriteLine(name+"關注的娃娃價格已更新成:"+price);
		}
	}
}

话说为啥屌丝都那么色?小白可怜的IT屌丝, 只能被威哥开玩笑。

抱歉!评论已关闭.