设计模式.怎么学设计模式 原则
定义
在某些场景下,针对某类问题的某种通用的解决方案
设计模式 区别于架构模式和惯例
- 架构模式 是软件的架构风格,架构维度
- 设计模式 是软件设计中的问题的通用解决方案,设计维度
- 惯例 是 特定语言中 代码的使用技巧,编码维度
原则
开闭原则
对扩展开放,对修改关闭
单一职责原则
一事一地
里氏替换原则
子类可以替代父类
重写会破坏这个原则
依赖倒转原则
面向接口编程,依赖于抽象而不依赖于具体
接口隔离原则
使用多个隔离的接口,比使用单个接口(多个接口方法集合到一个的接口)要好
迪米特法则(最少知道原则)
一个对象对其他对象尽可能少了解
组合重用原则
组合优先于继承
分类
创建型
结构型
行为性
其他
为啥要学设计模式
1. 理解源码: 设计模式是一个特定场景的最佳设计实践, 在一个框架中会遇到比较多设计模式应用,比如你看到***Factory就知道是用来创建来的工厂类,***Builder就知道这是建造者模式,是担心你new对象后不设置某些属性,就回收了构造方法。
2. 交流: 这就要求你在应用设计模式的时候需要按照规范的命名,否则别人会看不懂。软件不是你一个人的事,代码可能性应该是放在首位的,当然有些自以为是的人并不理睬。
3. 学习编码方法: 设计模式学习的时候一板一眼,但真正编码的时候谁会拿着兵法打仗,拿着菜谱做饭呢。慢慢的都会融于你的编码习惯,比如上面的法则是抽象,解耦,团队协作方面应该遵循的原则,习惯。习惯了靠右边走路,马路上也就没人被法则了,当有人直接问你马路走路原则的时候估计也会懵逼一会,这还有啥原则啊
4. 面试八股文: 中级,有的高级也会问的题。这类问题没啥技术含量,就是知道和不知道区别。
怎么学设计模式
1. 记住名称
2. 解决问题的痛点
3. 解决后有什么好处
4. 相似设计模式类比
5. 设计项目中记录一段代码,这样更有血有肉
设计模式框架
不得不说搞端产品的开发,比搞web的更倾心设计模式。原因很简单了,代码都在一块堆着你再不好好“码码垛”就没法看了,也没法分团队各自做各自的事情了。而WEB则是,尤其是微服务化后,大量的精力都解决分布式,微服务,以及WEB各种容器,系统,中间件带了的问题了,单个微服务里边及时乱一点也不会有太多代码。