欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

设计模式(1)

程序员文章站 2022-03-26 18:24:23
注:本文章示例为C#代码,设计模式通用任何编程语言,可放心阅读 设计模式(3W1H) What?针对特定问题特出的特定的解决方案 Why?让程序有更好的可扩展度 Where?一般情况下,开发中真正使用设计模式的地方不多。面试 JVM底层机制 模式 框架底层应用了很多设计模式 How?任何时候、任何场 ......

  注:本文章示例为C#代码,设计模式通用任何编程语言,可放心阅读

设计模式(3W1H)

  What?针对特定问题特出的特定的解决方案

  Why?让程序有更好的可扩展度

  Where?一般情况下,开发中真正使用设计模式的地方不多。面试---JVM底层机制 模式 框架底层应用了很多设计模式

  How?任何时候、任何场合、任何语言都符合自己所制定的规则

 

一.单例模式

  一个类只有一个全局实例

     //构造私有
        private FrmPlay()
        {
            InitializeComponent();
        }
        //2.静态成员变量
        private static FrmPlay play;
        //3.定义一个公有的  静态的 返回类类型的方法
        public static FrmPlay GetInstance() 
        {
            if (play==null)
            {
                play = new FrmPlay();
            }
            return play;
        }
//省略调用代码

  保证步骤:单例(一个类在内存中只能有一个对象)三条件

    1. 类构造设置私有

    2. 定义一个私有的静态的类类型变量

    3. 定义一个共有的静态方法 并且方法返回值类型为类类型的方法

 

二.简单工厂模式

  一个工厂方法,依据传入的参数,生成对应的具体产品对象;

 

    工厂方法一般设成静态方法,返回值一般是抽象类或接口,具体的产品类一般继承或实现抽象类、接口;

    优点:产品使用者不需要关心产品类的创建过程,与具体产品的实现类达到解耦的效果;

    缺点:违背"开放--封闭"原则(OCP),因为新增一个产品类的时候,需要修改原先的工厂方法;

    适用场合:当工厂类负责创建的对象比较少的时候;

 

     public static Calculater GetInstace(string oper) 
        {
       //父类
            Calculater calc = null;
            //3.进行判定  运算符和 +   -
            switch (oper)
            {
           /*
          *各子类---里氏替换原则
          **/

                case "+":
                    calc = new Add();
                    break;
                case "-":
                    calc = new Sub();
                    break;
                case "*":
                    calc = new Multi();
                    break;
                case "/":
                    calc = new Div();
                    break;
                default:
                    break;
            }
            return calc;
        }

 //省略各子类与调用父类代码

  保证步骤:

    1.创建的对象比较少

    2.公有静态返回值为父类类型的方法

    3.里氏替换的子类(也就是swich中)继承自抽象父类

 

 

 

                     未完,待续。。。