设计模式01(创建性设计模式)
简单列出这几个设计模式所包含的部分
1. 简单工厂模式
1.1 基类
1.2 方法类:通过基类,实现业务的方法类
1.3 业务类:根据业务传递过来的字符,判断需要创建对应的方法类
1.4 前台:前台调用业务类,传递1.3所需的字符
2.工厂模式
2.1 接口:创建统一的工厂操作接口(这个工厂需要生产的东西,比如对象,或者实现的方法)
2.2 基类
2.3 方法类:通过基类,实现业务的方法类,
2.4 业务类:将不用业务需要的字符,创建实现接口的业务类,业务类调用该业务的方法
2.5 前台:前台调用业务类
3.抽象工厂
3.1 接口:创建统一的工厂操作接口(这个工厂需要生产的东西,比如对象,或者实现的方法)
3.2 基类
3.3 方法类:通过基类,实现业务的方法类,
业务类:将不用业务需要的字符,创建实现接口的业务类,这里不使用new来直接操作方法类,通过反射来实现对象的创建。
private static readonly string AssemblyName = "AdstractFactory";
private static readonly string db = "Sqlserver";
public static IUser CreateUser()
{
string className = AssemblyName + "." + db + "User";
return (IUser)Assembly.Load(AssemblyName).CreateInstance(className);
}
3.4 前台:前台调用业务类
4.原型模式
原型模式包含两部分浅复制和深复制
4.1 浅复制:在本类中提供一个方法Clone,如果类中全是值类型,则只需MemberwiseClone浅复制就行
/// <summary>
/// 浅复制
/// </summary>
/// <returns></returns>
public object Clone()
{
return this.MemberwiseClone();
}
4.2 深复制:本类中如果存在引用类型,则需深复制,在本类中提供一个私有构造函数,复制本类的引用类型,提供一个Clone,全部重新复制本类
private Prototype(Hobby _hobby)
{
this.Hobby = (Hobby)_hobby.Clone();
}
/// <summary>
/// 深复制
/// </summary>
/// <returns></returns>
public Prototype Clone()
{
Prototype pro=new Prototype(this.Hobby);
pro.ID = this.ID;
pro.Name = this.Name;
return pro;
}
5.创建者模式
5.1 创建者接口:创建需要实现的方法(工序的过程)
5.2 方法类:实现接口
5.3 指挥者:根据产品特点,完成组装,对外提供可选的产品。
创建者模式和工厂很相似,不同的是创建者模式,有一个指挥者,最后提供一个结果
6.单例模式
6.1 懒汉式单例:使用双层判断,创建全局唯一的访问变量
public static Singleton Instance
{
get
{
if (_Instance == null) //双重锁定
{
lock (syncRoot)
{
if(_Instance==null)
_Instance = new Singleton();
}
}
return _Instance;
}
}
6.2 饿汉式单例:使用公共语言时,在初始化的时候用readonly,和static来创建对象
private static readonly Singleton01 _Instance=new Singleton01();
private Singleton01()
{
}
public static Singleton01 Instance
{
get
{
return _Instance;
}
}

浙公网安备 33010602011771号