软件设计技术-模式简介
设计模式的原则
• 里氏代换原则 如果调用的是父类的话,那 么换成子类也完全可以就是在一个新的对象 里面使用一些已有的对象,使之成为新对 象的一部分; • 新的对象通过向这些对象的委派达到复用 已有功能的目的。 • 它的设计原则是;要尽量使用合成/聚合, 尽量不要使用继承。
设计模式的原则
• 依赖倒转原则 抽象不应该依赖于细节,细 节应当依赖于抽象。 • 要针对接口编程,而不是针对实现编程。 • 传递参数,或者在组合聚合关系中,尽量 引用层次高的类。 • 主要是在构造对象时可以动态的创建各种 具体对象
设计模式的原则
• 接口隔离原则 定制服务的例子,每一个接口应该 是一种角色,不多不少,不干不该干的事,该干 的事都要干 • “不应该强迫客户依赖于它们不用的方法。接口 属于客户,不属于它所在的类层次结构。” • 不要强迫客户使用它们不用的方法,如果强迫用 户使用它们不使用的方法,那么这些客户就会面 临由于这些不使用的方法的改变所带来的改变。
软件设计技术
设计模式
定义
• (Design pattern)是一套被反复使用、 多数人知晓的、经过分类编目的、代码设 计经验的总结。 • 使用设计模式是为了可重用代码、让代码 更容易被他人理解、保证代码可靠性。 • 毫无疑问,设计模式于己于他人于系统都 是多赢的,设计模式使代码编制真正工程 化。
来源
设计模式和框架
• 可复用面向对象软件系统现在一般划分为两大类: 应用程序工具箱和框架(Framework),我们平时 开发的具体软件都是应用程序,Java的API属于 工具箱;而框架是构成一类特定软件可复用设计 的一组相互协作的类。 • 框架通常定义了应用体系的整体结构类和对象的 关系等等设计参数,以便于具体应用实现者能集 中精力于应用本身的特定细节。框架主要记录软 件应用中共同的设计决策,框架强调设计复用, 因此框架设计中必然要使用设计模式。
设计模式的原则
• 抽象类 • 抽象类不会有实例,一般作为父类为子类 继承,一般包含这个系的共同属性和方法。 • 注意:好的继承关系中,只有叶节点是具 体类,其他节点应该都是抽象类,也就是 说具体类是不被继承的。将尽可能多的共 同代码放到抽象类中。
设计模式的原则
• 迪米特法则 最少知识原则。 • 不要和陌生人说话。 • 一个软件实体应当尽可能少的与其他实体 发生相互作用。每一个软件单位对其他的 单位都只有最少的知识,而且局限于那些 与本单位密切相关的软件单位。
设计模式的原则
• 开闭原则 模块应对扩展开放,而对修改关闭 • 模块应尽量在不修改原(是“原”,指原来的代码) 代码的情况下进行扩展。 • 软件系统中包含的各种组件,例如模块、类以及 功能等等,应该在不修改现有代码的基础上,引 入新功能。开闭原则中“开”,是指对于组件功 能的扩展是开放的,是允许对其进行功能扩展的; 开闭原则中“闭”,是指对于原有代码的修改是 封闭的,即不应该修改原有的代码。
• GoF(“四人帮”,又称Gang of Four,即 Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides四人)的《设计模 式》,原名《Design Patterns: Elements of Reusable Object-Oriented Software》 (1995年出版,出版社:Addison Wesly Longman.Inc),第一次将设计模式提升到理论 高度,并将之规范化。该书提出了23种基本设计 模式。时至今日,在可复用面向对象软件的发展 过程中,新的设计模式仍然不断出现。