设计模式01(建立性设计模式)

简单列出这几个设计模式所包含的部分html

1. 简单工厂模式设计模式

1.1 基类函数

1.2 方法类:经过基类,实现业务的方法类this

1.3 业务类:根据业务传递过来的字符,判断须要建立对应的方法类设计

1.4 前台:前台调用业务类,传递1.3所需的字符server

2.工厂模式htm

2.1 接口:建立统一的工厂操做接口(这个工厂须要生产的东西,好比对象,或者实现的方法)对象

2.2 基类接口

2.3 方法类:经过基类,实现业务的方法类,ip

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;
            }
        }
相关文章
相关标签/搜索