时间仓促,简单记一点自己的感想,写一篇杂文
一、背景不管是技术方案还是工作和生活,没有最好的选择,只有最适合的选择。
二、举例2.1 设计模式
大家都知道设计模式是很多大牛总结出来的一些经典的设计实践。
然而,如果你稍加留意就会发现, 没有最好的设计模式,任何一种设计模式都有优缺点,只能根据某种场景选择最适合的设计模式。
https://www.runoob.com/design-pattern/design-pattern-tutorial.html
如 单例设计模式
优点:
1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。
2、避免对资源的多重占用(比如写文件操作)。
缺点:
没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。
如观察者模式
优点:
1、观察者和被观察者是抽象耦合的。
2、建立一套触发机制。
缺点:
1、如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。
2、如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。
3、观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。
2.2 数据结构
大家知道有很多种数据结构,如数组、链表、树、图等,每种数据结构都有自己的优劣,都有自己最适合的场景。
三、反证法3.1 概述
如果有一种设计模式、一种数据结构可以解决所有问题,就不会有那么多设计模式和数据结构了。
3.2 各种编程语言
一直有人说“Php 是世界上最好的语言”,也有人说“Java 是世界上最好的语言”等等。
其实这种争论没有意义,如果一种编程语言可以拥有所有优点,如效率高、可读性强,适合各种场景,那么早就一统江湖了。
2.3 螺丝刀
有时候家里会有很多螺丝刀,有梅花,有一字的,这就像不同的设计模式对应不同的场景。
没有一种螺丝刀可以符合所有场景而且成本低还方便易用,如果有那么所有螺丝刀早淘汰了。
很多人也一直在学习设计模式、数据结构、算法等,更侧重的是记忆。
很多人以看过多少书,学过多少东西为荣,现在突然意识到,工作不是考试,会用的才是自己真正掌握的东西。
现在更愿意推荐大家侧重理解其优、缺点,适应的场景,能够在适合的场景想起来使用适当的技术,我认为就是一个优秀的软件设计师。