首页 > 代码库 > 设计模式01(创建性设计模式)
设计模式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; } }
设计模式01(创建性设计模式)