一.UML类图和面向对象设计原则简介 在学习设计模式之前,需要找我一些预备知识,主要包括UML类图和面向对象设计原则. UML类图可用于描述每一个设计模式的结构以及对模式实例进行说明,而模式结构又是设计模式的核心组成部分,学习一个设计模式,如果不能绘制和理解其结构图,基本上等于没学. 面向对象设计原则是每一个设计模式效果评价的重要依据,每一个模式都符合一个或多个面向对象设计原则,这些原则都是从无数项目中提取出来的经验性原则,它们为消除软件设计和实现中的“臭味”而诞生,力图为当前系统提供最好的设计…
1.课程内容: 重新认识面向对象:面向对象设计原则: 2.重新认识面向对象 1)理解隔离变化:从宏观层面来看,面向对象的构建方式更能适应软件的变化,将变化所带来的影响减为最小: 2)各司其职:从微观层面来看,面向对象更强调各个类的责任:由于需求变化导致的新增类型不应该影响原来类型的实现: 3)对象是什么:从语言实现层面来看,对象封装了代码和数据:从规格层面讲,对象是一系列可被使用的公共接口:从概念层面讲,对象是某种拥有责任的抽象. 3.面向对象设计原则 3.1 依赖倒置原则(DIP:Depend…
1 UML 1.1 UML UML(Unified Modeling Language)是统一建模语言,1997年11月UML1.1版本提交给OMG并正式通过,成为建模语言的个那个也标准.2003年6月UML2.0获得正式通过. 1.2 UML特性 U(Unified):统一,UML融合了多种优秀的面向对象建模方法以及多种得到认可的软件工程方法,消除了因方法林立且相互独立而带来的种种不便,集众家之长,股名"统一".通过统一的表示方法可以让不同知识背景的领域专家,系统分析设计人员以及开发…
1. 变化是复用的天敌! 面向对象设计的最大优势在于 : 抵御变化 2. 重新认识面向对象 理解隔离变化: 从宏观层面来看,面向对象的构建方式更能适应软件的变化, 能将变化所带来的影响减为最小. 各司其职: 从微观层面来看,面向对象的方式更强调各个类的”责任“ (代码示例中,各个类型图形,各自实现自己的draw) 由于需求变化导致的新增类型不应该影响原来类型的实现 ——各负其责. 对象是什么? 从语言实现的层面,对象是封装了代码和数据. 从规格层面讲,对象是一系列可被使用的公共接口. 从概念层面…
Java设计模式GOF之6大设计原则原则 1.开闭原则(Open Close Principle) 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. 开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则. 开闭原则由Bertrand  Meyer于1988年提出 一个软件实体应当对扩展开放,对修改关闭.即软件实体应尽量在不修改原有代码的情况下进行扩展. 2.里氏代换原则(Liskov Substitution Principle) 所有引用基类的地方必须能透明地使用其…
一.统一建模语言UML UML是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对象的.软件密集系统的制品的开放方法 UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效 详情转: 设计模式--统一建模语言UML 二.面向对象设计原则 软件设计的难点是应对变化.通过把系统功能封装成一个个对象,可以实现粒度细化.功能实现耦合度低和职责独立.耦合度低就是高内聚.松耦合,能够减少功能实现之间的关联,降低修改的影响:职责独立能够…
目录 设计原则 设计模式 设计原则 DRY (Don't repeat yourself 不要重复) KISS (Keep it stupid simple 简单到傻子都能看懂) YAGNI (You Aren't Gonna Need It 你不会需要它的) CCP 共同闭包 CRP 共同复用 高内聚.低耦合 惯例优先配置 SCO 关注点分离 ADP 无依赖环 SOLID 面向对象设计原则 SOLID S - Single-responsiblity Principle 单一职责 O - Op…
面向对象设计原则: 是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator.Observer这样的设计模式,而不重视面向对象的分析和设计.甚至还有经验丰富的Java程序员没有听说过OOPS和SOLID设计原则,他们根本不知道设计原则的好处,也不知道如何依照这些原则来进行编程. 众所周知,Java编程最基本的原则就是要追求高内聚和低耦合的解决方案和代码模块设计.查看Ap…
1. 引言     从大一开始学习编程,到如今也已经有两年了.从最初学习的Html,Js,JaveSe,再到JavaEE,Android,自己也能写一些玩具.学习过程中也无意识的了解了一些所谓的设计模式,如今打算系统的学习.学习以书<设计模式的艺术--软件开发人员内功修炼之道/刘伟著>为主.       所谓设计模式,即是前人对某类相似问题的抽象给出的解决方案.书中给出了23(Gof)+1(简单工厂模式)种设计模式.每种模式的学习将关注以下几点:名称(Name),问题(Problem),解决方…
软件的可维护性和可复用性 知名软件大师Robert C.Martin认为一个可维护性(Maintainability) 较低的软件设计,通常由于如下4个原因造成: 过于僵硬(Rigidity)  过于脆弱(Fragility)  复用率低(Immobility)  黏度过高(Viscosity) 软件工程和建模大师Peter Coad认为,一个好的系统设计应该具备如下三个性质: 可扩展性(Extensibility)  灵活性(Flexibility) 可插入性(Pluggabil…