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