专栏首页个人随笔设计模式(1)

设计模式(1)

  注:本文章示例为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中)继承自抽象父类

未完,待续。。。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深入.NET框架

    1.1 .NET框架的优点   面向对象   对Web应用的强大支持   对Web Service(Web服务)的支持   实现SOA,支持云计算   支持构建...

    房上的猫
  • Java 中的异常处理机制

    生活中的异常:  不能够完整而顺利的完成一些工作  根据不同的异常进行相应的处理,而不会就此终端我们的生活 引出:   异常处理:   方式:     ...

    房上的猫
  • 房上的猫:经典排序算法 - 冒泡排序Bubble sort

    原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒...

    房上的猫
  • 数据分析初识、Anaconda安装、Juypyter notebook配置与快捷键

    在我们如今这个时代,相信大多数人都能明白数据的重要性,数据就是信息,而数据分析就是可以让我们发挥这些信息功能的重要手段。

    GH
  • 探索Redis设计与实现9:数据库redisDb与键过期删除策略

    本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看

    Java技术江湖
  • 100天搞定机器学习|Day57 Adaboost知识手册(理论篇)

    Adaboost模型内容较多,我将分为理论篇和实践篇分别介绍,本文为理论篇,主要介绍Boostting算法、Adaboost基本概念,算法原理、公式推导、Skl...

    统计学家
  • 12个颠覆性技术趋势对营销策略的影响

    哈佛大学教授James Culliton在1948年发表的一篇文章中描述了营销领导者,这篇文章为经典4P(价格、产品、促销和场所)营销模式奠定了基础。 而201...

    半吊子全栈工匠
  • 打造自己的搜索引擎 顶

    这周项目要做一个搜索引擎系统,于是,我看看了看上下左右,看来只有我来弄了~~ 

    linapex
  • 通话流畅、可私有化部署的EasyRTC企业视频会议通话系统在电信作业现场的集成应用分析

    近几年,视频在互联网总流量的占比达到80%以上,其中视频会议的使用呈现高增长态势,它不仅能节省时间,而且可以保证参会率,可谓一举多得。从视频会议的使用场景来看,...

    EasyNVR
  • 十步零基础JavaScript学习路径

    之前写过一篇26天学通前端开发,内容主要讲的就是前端学习路径,今天再来写一篇零基础的JavaScript学习路径,希望能帮编程零基础的前端爱好者指明方向。 开发...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券