private static readonly object _syncLock = new object();//线程同步锁; private static DataAccessorFactory _instance; /// <summary> /// 返回 DataAccessorFactory 的唯一实例; /// </summary> public static DataAccessorFactory Instance { get { if (_instance == null) { lock (_syncLock) { if (_instance == null) { _instance = new DataAccessorFactory(); } } } return _instance; } } public IDataAccessor GetDataAccessor(AccessorType type) { if (type == AccessorType.SqlServer) { return new SqlDataAccessor(); } else { return new AccessDataAccessor(); } }调用: IDataAccessor da = DataAccessorFactory.Instance.GetDataAccessor(DataAccessorFactory.AccessorType.SqlServer);
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 public abstract class VideoWiring { public abstract string PlayVideo(); } public class Create { public static VideoWiring factory(string VideoName) { switch (VideoName) { case "DVD": return new DVD(); case "VCD": return new VCD(); } return null; } } public class VCD:VideoWiring { public override string PlayVideo() { return "正在播放播放VCD"; } } public class DVD : VideoWiring { public override string PlayVideo() { return "正在播放播放DVD"; } } 看下这个例子 VideoWiring vw = Create.factory("DVD"); textBox1.Text= vw.PlayVideo(); vw = Create.factory("VCD"); textBox1.Text+=vw.PlayVideo();
private static DataAccessorFactory _instance;
/// <summary>
/// 返回 DataAccessorFactory 的唯一实例;
/// </summary>
public static DataAccessorFactory Instance
{
get
{
if (_instance == null)
{
lock (_syncLock)
{
if (_instance == null)
{
_instance = new DataAccessorFactory();
}
}
}
return _instance;
}
} public IDataAccessor GetDataAccessor(AccessorType type)
{
if (type == AccessorType.SqlServer)
{
return new SqlDataAccessor();
}
else
{
return new AccessDataAccessor();
}
}调用:
IDataAccessor da = DataAccessorFactory.Instance.GetDataAccessor(DataAccessorFactory.AccessorType.SqlServer);
public abstract class VideoWiring
{
public abstract string PlayVideo();
} public class Create
{
public static VideoWiring factory(string VideoName)
{
switch (VideoName)
{
case "DVD":
return new DVD();
case "VCD":
return new VCD();
}
return null;
}
}
public class VCD:VideoWiring
{
public override string PlayVideo()
{
return "正在播放播放VCD";
}
} public class DVD : VideoWiring
{
public override string PlayVideo()
{
return "正在播放播放DVD";
}
}
看下这个例子
VideoWiring vw = Create.factory("DVD");
textBox1.Text= vw.PlayVideo();
vw = Create.factory("VCD");
textBox1.Text+=vw.PlayVideo();
加法运算类
减法运算类
XX法运算类
}工厂类
{
生成并返回XX法运算类实例方法
}运用类
{
工厂类.生成实例方法
}
这里有大话设计模式电子书的下载,第一章就是工厂模式,楼主研究一下吧,强烈推荐此书
下的*Factory就是最好的例子.