设计模式学习
1.单件模式(Singleton Pattern)
用于全局只有一个实例的情况。
实现要领:a.构造函数定义为private
b.定义静态私有成员,类型为这个类
c.定义公有静态方法,GetInstance。该方法内需要注意线程同步。
d.其他类的成员或者方法可以不为static
public class Singleton
{
private static Singleton _Instance;
/// <summary>
/// 不让外部访问构造函数
/// </summary>
private Singleton()
{
}
public static Singleton GetInstance()
{
System.Threading.Mutex mutex=new System.Threading.Mutex();
mutex.WaitOne();
if(_Instance==null)
{
_Instance=new Singleton();
//虽然构造函数是private的,但在该类定义内部,还是能够访问的
}
mutex.ReleaseMutex();
return _Instance;
}
}
2.简单工厂模式(Simple Factory Pattern)
构成:简单工厂类,产品基类,产品继承类
缺点:增加一种产品继承类,就需要改变简单工厂类
3.工厂方法(Factory Method)
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到子类,这个接口所指的是一个抽象方法。该方法说明需要创建一个对象,但并不给出具体的创建方法和创建什么类型的对象。
能够解决简单工厂存在的缺点。需要一个抽象的工厂类和具体的工厂类,具体的工厂类和具体的产品类相对应。其对应关系可以通过代码解决,或者通过配置文件,反射的方式解决(petshop就是这么解决的)。
参考网址:简单工厂,工厂方法:
http://www.cnblogs.com/shenfx318/archive/2007/01/09/614844.html
抽象工厂:
http://community.hf-mstc.org/cs/RssAggregation/BlogView.aspx?ID=aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9zaGVuZngzMTgvYXJjaGl2ZS8yMDA3LzAxLzE2LzYyMTIzNy5odG1s