1-设计思想,原则,模式在研究什么

一. 是什么

设计思想,原则,模式是一门基础知识,但是它和数据结构、算法更像是一道儿的,相比那些更加基础的学科,设计模式能更直接地提高你的开发能力。如果说数据结构和算法是教你如何写出高效代码,那设计模式讲的是如何写出可扩展、可读、可维护的高质量代码,所以,它们跟平时的编码会有直接的关系,也会直接影响到你的开发能力。

  • 如何分层、分模块?

  • 应该怎么划分类?

  • 每个类应该具有哪些属性、方法?

  • 怎么设计类之间的交互?

  • 该用继承还是组合?

  • 该使用接口还是抽象类?

  • 怎样做到解耦、高内聚低耦合?

  • 该用单例模式还是静态方法?用工厂模式创建对象还是直接 new 出来?

  • 如何避免引入设计模式提高扩展性的同时带来的降低可读性问题?

    ……各种问题,一下子挤到了我面前。而我当时并没有对设计模式相关的知识(包括设计模式、设计原则、面向对象设计思想等)有太多的了解和积累,所以一时间搞得我手足无措。好在因此我意识到了这方面知识的重要性,所以在之后很多年的开发中,我都一直刻意锻炼、积累这方面的能力。面对复杂代码、功能、系统的设计和开发,我也越来越得心应手,游刃有余。写出高质量代码已经成为了我的习惯,不经意间写出来的代码,都能作为同事学习、临摹的范例,这也成为了我职场中最引以为豪的亮点之一。

    优秀的开源项目、框架、中间件,代码量、类的个数都会比较多,类结构、类之间的关系极其复杂,常常调用来调用去。所以,为了保证代码的扩展性、灵活性、可维护性等,代码中会使用到很多设计模式、设计原则或者设计思想。如果你不懂这些设计模式、原则、思想,在看代码的时候,你可能就会琢磨不透作者的设计思路,对于一些很明显的设计思路,你可能要花费很多时间才能参悟。相反,如果你对设计模式、原则、思想非常了解,一眼就能参透作者的设计思路、设计初衷,很快就可以把脑容量释放出来,重点思考其他问题,代码读起来就会变得轻松了。

二. 学什么

接下来, 会介绍三方面的内容:

1. 面向对象的设计思路

面向对象是一种编程风格,其他风格还有诸如面向过程、和函数式编程. 大部分项目都是基于面向对象编程风格开发的, 因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式能够实现的基础。

  • 面向对象的四大特性:封装、抽象、继承、多态
  • 面向对象编程与面向过程编程的区别和联系
  • 面向对象分析、面向对象设计、面向对象编程
  • 接口和抽象类的区别以及各自的应用场景
  • 基于接口而非实现编程的设计思想
  • 多用组合少用继承的设计思想
  • 面向过程的贫血模型和面向对象的充血模型
2. 设计原则

设计原则是指导我们代码设计的一些经验总结.这一部分内容,你需要透彻理解并且掌握,如何应用下面这样几个常用的设计原则

  • SOLID 原则 -SRP 单一职责原则
  • SOLID 原则 -OCP 开闭原则
  • SOLID 原则 -LSP 里式替换原则
  • SOLID 原则 -ISP 接口隔离原则
  • SOLID 原则 -DIP 依赖倒置原则
  • DRY 原则、KISS 原则、YAGNI 原则、LOD 法则
3. 设计模式

设计模式是总结出来的一套解决方案或者设计思路. 设计模式相对于设计原则来说,没有那么抽象,代码实现也并不复杂。这一块的学习难点是了解它们都能解决哪些问题,掌握典型的应用场景.
23 种经典的设计模式。它们又可以分为三大类:创建型、结构型、行为型。设计模式的学习,我们要有侧重点,因为有些模式是比较常用的,有些模式是很少被用到的。对于常用的设计模式,我们要花多点时间理解掌握。对于不常用的设计模式,我们只需要稍微了解即可。

  1. 创建型
    • 常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。
    • 不常用的有:原型模式。
  2. 结构型
    • 常用的有:代理模式、桥接模式、装饰者模式、适配器模式。
    • 不常用的有:门面模式、组合模式、享元模式。
  3. 行为型
    • 常用的有:观察者模式、模板模式、策略模式、职责链模式、迭代器模式、状态模式。
    • 不常用的有:访问者模式、备忘录模式、命令模式、解释器模式、中介模式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值