设计模式总结
从18年10月份开始学习设计模式,到19年1月底才看完,这篇博文主要总结这个过程中我的收获和一些思考。
我的收获
- 从刚开始接触Java就听说过设计模式,但是由于自己的能力有限,又觉得设计模式是一个很高大上的东西,所以一直都没有碰,这次有幸系统的学习了一遍设计模式。
- 在开发之前开始思考如何设计更合理了。可能在这之前并没有想过太多的设计相关的东西,只是想着快速实现并且不出现bug,并没有想着怎样设计才是更合理一点。
- 开始考虑系统的可扩展性了,毕竟总会改变。
- 在遇到问题后开始想有那个设计模式会适用这个场景。
- 对面向对象有了更深一步的了解。
面向对象的三大特性
封装(Encapsulation)
隐藏对象的具体实现细节,通过共有方法暴露对象的功能。内部结构可以自由修改,同时可对成员进行更加精确的控制 (比如在setter方法中加值合法判断)继承(Inheritance)
使用已经存在的类作为基础类(父类),在此基础上建立新类(子类),子类既可复用父类的功能,也能进行扩展,从而实现代码复用。 另外Java是单继承的,可以通过接口和内部类实现多继承。但是有几点需要注意一下:- 子类拥有父类非private的属性与方法
- 构造方法只能调用,不能实现,子类默认调用父类的无参构造方法,
如果父类没有无参的构造方法,需要使用super显式调用! - 慎用继承,要考虑是否需要从子类向父类进行向上转型!(转型要instanceof)
多态(Polymorphism)
一个类实例的相同方法在不同的情形下有不同的表现形式。多态分为两种:方法重载和重写(主要描述父类和子类之前的多态)。
类与类间的关系
- 继承,实现,依赖,关联,聚合,组合
- 类的相关程度:继承 < 实现 < 依赖 < 关联 < 聚合 < 组合
依次的UML类图标记
- 继承
- 实现
- 依赖
- 关联
- 聚合
- 组合
- 继承
设计模式的六大原则
- 单一职责原则
每一个类应该专注于做一件事情。 即:高内聚,低耦合。 - 里氏替换原则
在任何父类出现的地方都可以用它的子类来替代。 - 依赖倒置原则
要依赖于抽象,不要依赖于具体实现。 - 接口隔离原则
应当为客户端提供尽可能小的单独的接口,而不是提供大的总的接口。 - 迪米特法则
一个对象应当尽量少地与其他对象之间发生相互作用,使得系统功能模块相对独立。 - 开闭原则
一个对象对扩展开放,对修改关闭。即:对类的改动是通过增加代码进行的,而不是修改现有代码。
设计模式逐一攻破
- 设计模式专栏
- github
永远不要对学习失去兴趣。
还没有评论,来说两句吧...