• 设计模式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;
                }
            }
  • 相关阅读:
    WebFrom与MVC异同
    MVC解决WebFrom的缺点
    转载ORM--EF框架
    转载 HashSet用法 合交并差
    用户管理模块数据库设计
    外键的增删改查练习
    索引:如何让主键不自动创建聚集索引???
    SQL-类型转换函数
    SQL-union
    SQL字符串函数
  • 原文地址:https://www.cnblogs.com/sera/p/4223650.html
Copyright © 2020-2023  润新知