观察者模式
来源:互联网 发布:win7远程控制软件 编辑:程序博客网 时间:2024/06/12 23:01
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
namespace TestListener
{
// 观察者Interface
public interface IObserver
{
void Notify(object obj);
}
public interface IObservalble
{
void AddListner(IObserver observer);
void RemoveListener(IObserver observer);
}
public class ObservableImapl : IObservalble
{
protected List<IObserver> Observers = new List<IObserver>();
public void AddListner(IObserver observer)
{
if (Observers.Contains(observer)) return;
Observers.Add(observer);
}
public void RemoveListener(IObserver observer)
{
if (!Observers.Contains(observer)) return;
Observers.Remove(observer);
}
public void NotifyObserver(object obj)
{
foreach (IObserver o in Observers)
{
o.Notify(obj);
}
}
}
public class MyObserver : IObserver
{
private TextBlock c;
public MyObserver(TextBlock c)
{
this.c = c;
}
public void Notify(object obj)
{
c.Text = c.Text + " " + obj.ToString();
Console.WriteLine(obj.ToString());
}
}
public class MyObservealbe : ObservableImapl
{
public void doSomthing(string content)
{
base.NotifyObserver(content);
}
public void Remove(string content)
{
base.NotifyObserver(content);
}
}
//实际调用的过程
public class MainClass
{
public static void DoMain(TextBlock c)
{
//创建观察者和被观察者
MyObserver ui = new MyObserver(c);
MyObservealbe data = new MyObservealbe();
//在被观察对象中注册观察者
data.AddListner(ui);
//改变被观察对象中的数据,这时被观察者会通知观察者
data.doSomthing("do something");
data.Remove("Remove something");
data.RemoveListener(ui);
//注销观察者,停止观察
data.RemoveListener(ui);
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
namespace TestListener
{
// 观察者Interface
public interface IObserver
{
void Notify(object obj);
}
public interface IObservalble
{
void AddListner(IObserver observer);
void RemoveListener(IObserver observer);
}
public class ObservableImapl : IObservalble
{
protected List<IObserver> Observers = new List<IObserver>();
public void AddListner(IObserver observer)
{
if (Observers.Contains(observer)) return;
Observers.Add(observer);
}
public void RemoveListener(IObserver observer)
{
if (!Observers.Contains(observer)) return;
Observers.Remove(observer);
}
public void NotifyObserver(object obj)
{
foreach (IObserver o in Observers)
{
o.Notify(obj);
}
}
}
public class MyObserver : IObserver
{
private TextBlock c;
public MyObserver(TextBlock c)
{
this.c = c;
}
public void Notify(object obj)
{
c.Text = c.Text + " " + obj.ToString();
Console.WriteLine(obj.ToString());
}
}
public class MyObservealbe : ObservableImapl
{
public void doSomthing(string content)
{
base.NotifyObserver(content);
}
public void Remove(string content)
{
base.NotifyObserver(content);
}
}
//实际调用的过程
public class MainClass
{
public static void DoMain(TextBlock c)
{
//创建观察者和被观察者
MyObserver ui = new MyObserver(c);
MyObservealbe data = new MyObservealbe();
//在被观察对象中注册观察者
data.AddListner(ui);
//改变被观察对象中的数据,这时被观察者会通知观察者
data.doSomthing("do something");
data.Remove("Remove something");
data.RemoveListener(ui);
//注销观察者,停止观察
data.RemoveListener(ui);
}
}
}
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 观察者模式
- 关于UIView的autoresizingMask属性的研究
- poj 2472
- HOSTS文件详解
- 访问Android硬件资源の管理网络和Wifi连接
- java.sql.SQLException: Access denied for user 'root'@'xxx.xxx.xxx.xxx' at (数据库名)
- 观察者模式
- install solaris sparc on qemu
- mac使用教程《一》
- Android 中万能的 BaseAdapter(Spinner,ListView,GridView) 的使用!
- FASTSEARCH
- Android Wifi的工作流程
- 删除MFC单文档默认菜单栏的方法简介
- Spring环境搭建
- Qemu下安装Sun Solairs8简明教程