設計模式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;
            }
        }
相關文章
相關標籤/搜索