Java设计模式学习心得
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java设计模式之心得
UML
1.案例图:系统角色和使用案例和它们之间的关系
2.类图:
类图中的关系
1.一般化关系:继承,接口
2.关联关系:类与类之间的联系Driver中的Car
3.聚合关系:整体与个体之间的关系
4.合成关系:强关联,整体包含部分,整体代表部分的生命周期,不能共享
5.依赖关系:类与类之间的连接,如Person包含Car和House
3.时序图:
每个步骤的流程图
4.状态图:一系列对象的内部状态及状态变化和转移
5.合作图:相互关系图
6.构建图:部署的软件构件之间的关系
7.活动图:
8.部署图:
面向对象的设计原则:
1.设计目标:可扩展性、可维护性、可插入性、可复用性
2.设计原则:开闭原则、里氏替换原则、依赖倒转原则、接口隔离原则、组合\聚合复用原则、迪米特法则
开闭原则:
OCP作为OO的高层原则,主张使用“抽象(Abstraction)”和“多态(Polymorphism)”将设计中的静态结构改为动态结构,维持设计的封闭性。
一句话:“Closed for Modification;Open for Extension”——“对变更关闭;对扩展开放”。开闭原则其实没什么好讲的,我将其归结为一个高层次的设计总则。OCP的动机很简单:软件是变化的。不论是优质的设计还是低劣的设计都无法回避这一问题。OCP说明了软件设计应该尽可能地使架构稳定而又容易满足不同的需求。
重要的步骤:
1.抽象化
2.对可变性的封装原则
里氏替换原则:
1.分析对象时必须明确是Is-a还是Has-a的关系,任何基类适应的地方,子类一定适用依赖倒转原则:
要依赖于抽象,不要依赖于具体。简单的说,依赖倒置原则要求客户端依赖于抽象耦合。原则表述:抽象不应当依赖于细节;细节应当依赖于抽象;要针对接口编程,不针对实现编程。
接口隔离原则:
使用多个专门的接口比使用单一的总接口要好。广义的接口:一个接口相当于剧本中的一种角色,而此角色在一个舞台上由哪一个演员来演则相当于接口的实现。因此一个接口应当简单的代表一个角色,而不是一个角色。,如果系统设计多个角色的话,则应当每一个角色都由一个特定的接口代表。狭义的接口(Interface):接口隔离原则讲的就是同一个角色提供宽、窄不同的接口,以对付不同的客户端。
组合\聚合复用原则:
要尽量使用组合/聚合,而不是使用继承来达到目的
原因:
继承复用的缺点:静态复用
什么使用使用继承:a.满足is-a的关系,而不是has-a的关系
b.满足lsp原则
优点:a.简洁 b.父类修改某个方法,子类能获得
迪米特法则:
一个对象或模块应该和其它对象和模块尽量少的通信(高内聚),涉及的模式有:门面模式,调停者模式,前端控制器模式,业务代表模式,dao模式