zoukankan      html  css  js  c++  java
  • 设计模式的学习

    一、单一原则

    二、开放封闭 :为了满足开闭原则,需要对系统进行抽象化设计

    三、里氏替换 : 可以很容易实现同一个父类下各个子类的替换,客户端可以毫不察觉

    四、依赖倒置 :抽象不应该依赖细节,细节应该依赖于抽象

    五、接口隔离 :

    六、迪米特法则 :对象与对象之间避免少的方法来关联

    七、工厂模式

      1.简单工厂

      2.工厂方法 :适用于创建大量的对象,关注于产品等级结构    产品等级结构理解为不同的厂商同一个产品(方法)

      3.抽象工厂 :适用于创建大量的对象,关注于产品族             产品族理解为同一个厂商不同的产品(方法)

      

    八、建造者模式 : 通过创建建造者对象通过链式调用,传入简单的参数来处理内部复杂的方法

    九、单例模式 : 这里面会有指令重排序问题

      正常顺序是:1.分配内存

                        2.初始化对象

            3.把对象指向内存

     

           指令重排序的图

    十、原型模式 :适用于类初始化消耗大量资源、构造函数比较复杂,它不会调用构造器,直接去深克隆或者浅克隆

      优点 : 原型模式比new一个资源性能高,创建简化过程

      缺点 :必须在Object函数里面重新clone(克隆)的方法

      额外知识点:深拷贝、浅拷贝的区别

            深拷贝:它拷贝的是对象的里面的内容

            浅拷贝:它拷贝的是对象的创建的地址

    十一、外观模式 : 子系统复杂,通过外观模式提供简单的接口调用子系统。

                               就是把复杂的子系统的方法合并成一个外观方法供外面使用,以供简便

    十二、装饰者模式 : 给对象添加功能,可以动态生成和者取消

         首先定义抽象实体,定义一个实体去继承抽象实体,再定义抽象装饰者继承抽象实体,再定义装饰者实体继承抽象装饰者,这样就可以动态添加装饰方法

    十三、模版模式

    十四、组合模式  这两个需要学习

  • 相关阅读:
    js 数组,字符串,json互相转换
    数据库相关概念
    信号量,Event, 定时器
    解决Navicat远程连接mysql很慢的方法
    Ubuntu安装mycli,让mysql命令行可以自动提示
    Requests模块调用接口
    selenium chrome浏览器对应chrome版本
    selenium 元素定位+显示等待 方法封装
    smtplib 发送文本文件和附件文件 的类方法封装
    python 数据库的方法封装
  • 原文地址:https://www.cnblogs.com/liunx1109/p/12373798.html
Copyright © 2011-2022 走看看