zoukankan      html  css  js  c++  java
  • 漫谈设计模式

    看这个博客之前

    面对设计模式这个词,一般人多少都会有几分敬畏,或者是畏惧。

    为什么呢,大多数人会认为我就是一个写代码的,搬砖而已,设计什么模式啊,这玩意是给架构师,建筑学家用的。

    实则不然,设计模式并不是指导构建应用的方法论,而是一个个实打实的技巧,他们被应用在搬砖,贴瓦片,抹水泥的各种程序中,同时也可以是构建大型厂房,基地的指导论

    还有一点,博主是一个不折不扣的前端,偶尔用koa,express写个后台,所以这个文章,jser看起来会比较舒服

    设计模式所解决的问题

    所以设计模式到底解决了哪些问题呢

    1. 设计模式可以大幅度提升一个人的编程能力

    2. 设计模式可以让一个人的逼格大幅度增长

    3. 设计模式可以让你聊天的时候总是在说别人听不懂的东西,感觉你很无敌的样子

    4. 我们从无据可依的搬代码,变成有据可循的设计代码

    5. 当然团队配合中,设计模式也是可以发挥作用的,可以让配合更加默契

    ......

    以上足以可见,学好设计模式是多么的重要,所以让我们一起了解设计模式吧

    设计模式的分类

    设计模式被分为4大类

    分别是创建型模式,结构型模式,行为型和J2EE型。

    这四种分别指的是什么呢

    1. 创建型

     提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

     说白了就是 应该怎么优雅的创建对象,而不是用new这种比较low的方式

    比如工厂模式就是一种创建型设计模式

    2. 结构型

    这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。

    说白了就是类之间怎么合理的实现继承,组合,封装

    比如装饰器模式

    3. 行为型

    这些设计模式特别关注对象之间的通信。

    对象之间的行为,就是说对象之间怎么通信,两个对象之间礼貌的打招呼的方式。

    比如观察者模式

    4. J2EE 表示型

    这些玩意就比较高端了,它关注的是表示层。

    比如常听到的MVC就是一种j2ee

    综上,设计模式的四大类型覆盖了对象的创建,类的封装继承组合,对象之间的通信,以及整体的结构,架子。

    设计模式可以从宏观和微观的各种角度理解代码的设计学问。

    大体上知道设计模式是搞什么玩意的时候

    我们开始学习一下具体的模式

    设计模式的原则

    1. 开闭原则

    修改关闭,扩展开放,就是说,你想要修改我的东西是不可能的,但是你拿去想怎么拓展都无所谓

    2. 里氏交换原则

    里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。(摘自菜鸟教程)

    意思是说,派生类得可以和基类一样 继续派生和生成对象

    3、依赖倒转原则

    这个原则是开闭原则的基础,具体内容: 针对 接口编程,依赖于抽象而不依赖于具体。

    4. 接口隔离原则

    这个原则的意思是:使用多个隔离的接口,比使用单个接口要好。它还有另外一个意思是:降低类之间的耦合度。由此可见,其实设计模式就是从大型软件架构出发、便于升级和维护的软件设计思想,它强调降低依赖,降低耦合。

    5、迪米特法则,又称最少知道原则

    相互独立,减少耦合,使得功能相互独立

    6、合成复用原则

    尽量使用合成/聚合的方式,而不是使用继承。

    原则很难凭空理解,最好是在开发得时候,遇到矛盾然后想想这些原则,可能会明白一些东西

    结语

    下一节,我们将会讲述,创建型的5种模式

    • 工厂模式(Factory Pattern)
    • 抽象工厂模式(Abstract Factory Pattern)
    • 单例模式(Singleton Pattern)
    • 建造者模式(Builder Pattern)
    • 原型模式(Prototype Pattern)

    预知后事如何,请关注博主的博客园,持续更新中

    。。。。

    。。。

    。。

  • 相关阅读:
    webpack篇
    js 中对于this 的理解的 经典案例
    AMD、CMD、CommonJs和es6对比
    vue import异步加载js
    vscode 保存自动 格式化eslint 代码
    git设置
    面向对象的三大特性之继承
    面向对象 类与对象及其属性与方法 类的组合
    hashlib模块 hash算法
    configparser模块 配置文件的解析操作
  • 原文地址:https://www.cnblogs.com/sowhite/p/9505141.html
Copyright © 2011-2022 走看看