asp_net 模式
单体模式:
单体模式(Singleton)是经常为了保证应用程序操作某一全局对象,让其保持一致而产生的对象,例如对文件的读写操作的锁定,数据库操作的时候的事务回滚,还有任务管理器操作,都是一单体模式读取的。 创建一个单体模式类,必须符合三个条件: 1:私有构造函数(防止其他对象创建实例); 2:一个单体类型的私有变量; 3:静态全局获取接口 下面我写一个类,为了看是不是单体,就加了一个计数器,如果是同一个类,那么这个类的计数每次调用以后就应该自动加一,而不是重新建对象归零: .NET c# 单体模式
using System;
using System.Threading;
public class Singleton
{
private int ObjCount=0;
private Singleton()
{
Console.WriteLine("创建对象");
}
private static Singleton objInstance = null;
public static Singleton getInstance()
{
if (objInstance==null) objInstance=new Singleton();
return objInstance;
}
public void ShowCount()
{
ObjCount++;
Console.WriteLine("单个对象被调用了{0}次",ObjCount);
}
};
public class ConsoleTest
{
public static void Main(string[] args)
{
Console.WriteLine("开始执行单体模式");
for(int i=0;i<5;i++)
{
Singleton.getInstance().ShowCount();
}
Console.ReadLine();
}
};
观察者模式:
观察者模式可以控制哪些对象类需要去执行,比如说,ATM取款机取钱,首先邮箱要能接受到,同时手机也要能接受到,这个时候我们可以把手机对象和邮箱对象看作观察者(被动方)而执行这个消息的ATM取款机是主动放,也叫做被观察者。观察者模式的好处是我们可以随时添加设备或者对象执行我们想要的效果。废话不说,看下面的代码。
//j接受方的接口
interface IRecive
{
void ReciveData(string content);
}
//发送方的接口
interface ISend
{
void SendData(string content);
void AddObserver(IRecive obj);
}
//被观察的对象
class Observer : ISend
{
Mail _mailer;//观察的对象(存放观察者)
TelPhone _TelPhone;//观察的对象(存放观察者)
List<IRecive> _list = new List<IRecive>();//创建观察者列表
public Observer()
{
_mailer = new Mail();
_TelPhone = new TelPhone();
}
/// <summary>
/// 添加观察者,给观察者发送消息
/// </summary>
public void AddObserver(IRecive obj)
{
_list.Add(obj);
}
public void SendData(string content)
{
//给每个观察者发送消息
foreach (var item in _list)
{
item.ReciveData(content);
}
}
}
/// <summary>
/// 一个邮箱发送支持类(观察的对象)
/// </summary>
public class Mail : IRecive
{
public void ReciveData(string content)
{
Console.WriteLine("我是邮箱端,我接受的内容是:" + content);
}
}
/// <summary>
/// 一个手机发送消息支持类(观察的对象)
/// </summary>
public class TelPhone : IRecive
{
public void ReciveData(string content)
{
Console.WriteLine("我是手机端,我接受的内容是:" + content);
}
}
//执行
class Program
{
static void Main(string[] args)
{
Observer gc = new Observer();
gc.AddObserver(new Mail());
gc.AddObserver(new TelPhone());
gc.SendData("test");
Console.ReadLine();
}
}
单体模式:
单体模式(Singleton)是经常为了保证应用程序操作某一全局对象,让其保持一致而产生的对象,例如对文件的读写操作的锁定,数据库操作的时候的事务回滚,还有任务管理器操作,都是一单体模式读取的。 创建一个单体模式类,必须符合三个条件: 1:私有构造函数(防止其他对象创建实例); 2:一个单体类型的私有变量; 3:静态全局获取接口 下面我写一个类,为了看是不是单体,就加了一个计数器,如果是同一个类,那么这个类的计数每次调用以后就应该自动加一,而不是重新建对象归零: .NET c# 单体模式
using System;
using System.Threading;
public class Singleton
{
private int ObjCount=0;
private Singleton()
{
Console.WriteLine("创建对象");
}
private static Singleton objInstance = null;
public static Singleton getInstance()
{
if (objInstance==null) objInstance=new Singleton();
return objInstance;
}
public void ShowCount()
{
ObjCount++;
Console.WriteLine("单个对象被调用了{0}次",ObjCount);
}
};
public class ConsoleTest
{
public static void Main(string[] args)
{
Console.WriteLine("开始执行单体模式");
for(int i=0;i<5;i++)
{
Singleton.getInstance().ShowCount();
}
Console.ReadLine();
}
};
观察者模式:
观察者模式可以控制哪些对象类需要去执行,比如说,ATM取款机取钱,首先邮箱要能接受到,同时手机也要能接受到,这个时候我们可以把手机对象和邮箱对象看作观察者(被动方)而执行这个消息的ATM取款机是主动放,也叫做被观察者。观察者模式的好处是我们可以随时添加设备或者对象执行我们想要的效果。废话不说,看下面的代码。
//j接受方的接口
interface IRecive
{
void ReciveData(string content);
}
//发送方的接口
interface ISend
{
void SendData(string content);
void AddObserver(IRecive obj);
}
//被观察的对象
class Observer : ISend
{
Mail _mailer;//观察的对象(存放观察者)
TelPhone _TelPhone;//观察的对象(存放观察者)
List<IRecive> _list = new List<IRecive>();//创建观察者列表
public Observer()
{
_mailer = new Mail();
_TelPhone = new TelPhone();
}
/// <summary>
/// 添加观察者,给观察者发送消息
/// </summary>
public void AddObserver(IRecive obj)
{
_list.Add(obj);
}
public void SendData(string content)
{
//给每个观察者发送消息
foreach (var item in _list)
{
item.ReciveData(content);
}
}
}
/// <summary>
/// 一个邮箱发送支持类(观察的对象)
/// </summary>
public class Mail : IRecive
{
public void ReciveData(string content)
{
Console.WriteLine("我是邮箱端,我接受的内容是:" + content);
}
}
/// <summary>
/// 一个手机发送消息支持类(观察的对象)
/// </summary>
public class TelPhone : IRecive
{
public void ReciveData(string content)
{
Console.WriteLine("我是手机端,我接受的内容是:" + content);
}
}
//执行
class Program
{
static void Main(string[] args)
{
Observer gc = new Observer();
gc.AddObserver(new Mail());
gc.AddObserver(new TelPhone());
gc.SendData("test");
Console.ReadLine();
}
}