设计方案模式、框架与实践
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.... .
一般的对象创建方式
Noodle noodle = new Noodle(); Bread bread = new Bread(); Rice rice = new Rice(); … … …
.... .
使用工厂创建对象
.... .
餐厅里供应的菜谱
.... .
简单工厂
创建者模式
简单工厂模式 (Simple Factory) 工厂方法 (Factory Method) 抽象工厂 (Abstract Factory) 建造者模式 (Builder) 原型模式 (Prototype) 单例模式 (Singleton)
.... .
工厂模式
封装对象(产品)的构建过程
设计模式、框架及其实践
张永吉
.... .
怎样成为一个象棋高手?
第一步,学习基本规则 第二步,学习取胜的原理
这时,你说你已经学会下棋了 但是,你要想成为一个象棋高手,除了多下
棋和善于总结经验以外,一个重要的途径就 是看高手们的棋谱,学习、理解、记忆和应 用高手们总结的布局和定式 这里的布局和定式就相当于我们说的模式, 有几百种。
针对修改关闭 针对扩展开放 提高代码的可维护性
.... .
针对接口编程原则
接口是高层的抽象 接口可以隐藏实现的细节 接口可以清晰指出对象的职责 接口是实现软件pluggable的关键 松散耦合 增加重用的可能性
.... .
类的单一职责原则
一个类只做一件事 一个类的职责仅仅有一个原因而发生改变 例:如一个界面展示类夹杂业务逻辑代码或
<<接口>> Factory
.... .
目标
了解面向对象设计的基本原则 了解设计模式概念及常用的设计模式 了解框架的概念及设计原则 掌握设计模式的学习方法
.... .
设计模式
为什么使用设计模式? 什么是设计模式? 如何描述一个设计模式? 如何选择一个设计模式? 设计模式的分类
.... .Biblioteka Baidu
.... .
怎样成为一个软件设计高手?
第一步,学习基本规则。例如,数据结构、各种算 法、编程语言等。
第二步,学习软件设计的原理和方法。例如,结构 程序设计、模块化方法、面向对象的设计方法等。 这时,你已经可以说学会软件设计了。
但是,你要想成为一个软件设计的高手,除了多动 手和自己善于总结经验以外,一个重要的途径就是 看软件设计的高手们的软件,学习、理解、记忆和 重复应用软件设计模式。
这种模式很多,有几百种。
.... .
目标
了解面向对象设计的基本原则 了解设计模式概念及常用的设计模式 了解框架的概念及设计原则 掌握设计模式的学习方法
.... .
内容
面向对象设计开发的基本原则 设计模式概念、分类及常用设计模式 框架概念及设计原则 设计模式的运用实例
.... .
class 鸟{ public void 飞();
} class 鹦鹉{
public void 学话(); }
.... .
class 鸵鸟 : 鸟{ public void 飞(){ throws(“鸵鸟不能飞”); }
} //… public void play(鸟 d){
d.飞(); //此处换成鸵鸟将导致错误 }
工厂方法类图
客户端
Factory +create() : Product
具体工厂1
具体工厂2
Product
具体产品1
具体产品2
.... .
抽象工厂
产品线的生产方式 提供西北系列饮食
西北面包,西北面条,西北米饭
提供东北系列饮食
东北面包,东北面条,东北米饭
.... .
抽象工厂类图
重复。 晦涩性(Opacity):混乱的表达。
.... .
什么是设计模式?
面向对象设计经验的总结和理论化抽象 描述了软件设计过程中经常碰到的问题及其
解决方案核心。
.... .
如何描述一个设计模式?
意图 别名 动机 适用性 结构 参与者
协作 效果 实现 代码示例 已知应用 相关模式
为什么使用设计模式?
僵化性(Rigidity):设计难以改变。 脆弱性(Fragility):设计易于遭到破坏。 牢固性(Immobility):设计难以重用。 粘滞性(Viscosity):难以做正确的事情。 不必要的复杂性(Needless Complexity):过
分设计。 不必要的重复(Needless Repetition):过多的
简单工厂-手工作坊,个体户 生产面包,米饭,面条 所有的产品都有一个大师傅制作
.... .
简单工厂示例代码
.... .
调用者代码
.... .
工厂方法
工厂方法-规模扩大,更专业 工厂和产品是平行的继承层次结构 每一种产品都有专门的大师傅制作 有面包师,面条师,米饭师
.... .
.... .
如何选择一个设计模式?
了解每一个设计模式所解决的问题 了解模式的静态结构 了解模式的动态结构 查看当前设计系统易变的部分
.... .
设计模式的分类
创建者模式
有关对象创建的模式
结构型模式
描述对象构造和组成的方式
行为模式
描述一组对象交互的方式
.... .
者数据数据库联接代码。
.... .
依赖倒置原则
抽象不应该依赖于具体 具体应该依赖于抽象 抽象依赖于具体,降低了重用的可能性
.... .
结构化编程
面向对象的架构
.... .
里氏代换原则
在所有引用基类的地方,都可以用此基类的 子类替换,而不影响程序原来的功能
违背里氏代换原则将给程序带来不稳定性
油品计算框架 基于Jexcel的简易报表开发框架 Junit 设计
.... .
面向对象设计原则
开闭原则 针对接口编程原则 高内聚-低耦合原则 最少知识原则 类的单一职责原则 依赖倒置原则 里氏代换原则
.... .
开闭原则
扩展系统的行为时,不需要修改以前的代码, 而是扩展以前的代码
一般的对象创建方式
Noodle noodle = new Noodle(); Bread bread = new Bread(); Rice rice = new Rice(); … … …
.... .
使用工厂创建对象
.... .
餐厅里供应的菜谱
.... .
简单工厂
创建者模式
简单工厂模式 (Simple Factory) 工厂方法 (Factory Method) 抽象工厂 (Abstract Factory) 建造者模式 (Builder) 原型模式 (Prototype) 单例模式 (Singleton)
.... .
工厂模式
封装对象(产品)的构建过程
设计模式、框架及其实践
张永吉
.... .
怎样成为一个象棋高手?
第一步,学习基本规则 第二步,学习取胜的原理
这时,你说你已经学会下棋了 但是,你要想成为一个象棋高手,除了多下
棋和善于总结经验以外,一个重要的途径就 是看高手们的棋谱,学习、理解、记忆和应 用高手们总结的布局和定式 这里的布局和定式就相当于我们说的模式, 有几百种。
针对修改关闭 针对扩展开放 提高代码的可维护性
.... .
针对接口编程原则
接口是高层的抽象 接口可以隐藏实现的细节 接口可以清晰指出对象的职责 接口是实现软件pluggable的关键 松散耦合 增加重用的可能性
.... .
类的单一职责原则
一个类只做一件事 一个类的职责仅仅有一个原因而发生改变 例:如一个界面展示类夹杂业务逻辑代码或
<<接口>> Factory
.... .
目标
了解面向对象设计的基本原则 了解设计模式概念及常用的设计模式 了解框架的概念及设计原则 掌握设计模式的学习方法
.... .
设计模式
为什么使用设计模式? 什么是设计模式? 如何描述一个设计模式? 如何选择一个设计模式? 设计模式的分类
.... .Biblioteka Baidu
.... .
怎样成为一个软件设计高手?
第一步,学习基本规则。例如,数据结构、各种算 法、编程语言等。
第二步,学习软件设计的原理和方法。例如,结构 程序设计、模块化方法、面向对象的设计方法等。 这时,你已经可以说学会软件设计了。
但是,你要想成为一个软件设计的高手,除了多动 手和自己善于总结经验以外,一个重要的途径就是 看软件设计的高手们的软件,学习、理解、记忆和 重复应用软件设计模式。
这种模式很多,有几百种。
.... .
目标
了解面向对象设计的基本原则 了解设计模式概念及常用的设计模式 了解框架的概念及设计原则 掌握设计模式的学习方法
.... .
内容
面向对象设计开发的基本原则 设计模式概念、分类及常用设计模式 框架概念及设计原则 设计模式的运用实例
.... .
class 鸟{ public void 飞();
} class 鹦鹉{
public void 学话(); }
.... .
class 鸵鸟 : 鸟{ public void 飞(){ throws(“鸵鸟不能飞”); }
} //… public void play(鸟 d){
d.飞(); //此处换成鸵鸟将导致错误 }
工厂方法类图
客户端
Factory +create() : Product
具体工厂1
具体工厂2
Product
具体产品1
具体产品2
.... .
抽象工厂
产品线的生产方式 提供西北系列饮食
西北面包,西北面条,西北米饭
提供东北系列饮食
东北面包,东北面条,东北米饭
.... .
抽象工厂类图
重复。 晦涩性(Opacity):混乱的表达。
.... .
什么是设计模式?
面向对象设计经验的总结和理论化抽象 描述了软件设计过程中经常碰到的问题及其
解决方案核心。
.... .
如何描述一个设计模式?
意图 别名 动机 适用性 结构 参与者
协作 效果 实现 代码示例 已知应用 相关模式
为什么使用设计模式?
僵化性(Rigidity):设计难以改变。 脆弱性(Fragility):设计易于遭到破坏。 牢固性(Immobility):设计难以重用。 粘滞性(Viscosity):难以做正确的事情。 不必要的复杂性(Needless Complexity):过
分设计。 不必要的重复(Needless Repetition):过多的
简单工厂-手工作坊,个体户 生产面包,米饭,面条 所有的产品都有一个大师傅制作
.... .
简单工厂示例代码
.... .
调用者代码
.... .
工厂方法
工厂方法-规模扩大,更专业 工厂和产品是平行的继承层次结构 每一种产品都有专门的大师傅制作 有面包师,面条师,米饭师
.... .
.... .
如何选择一个设计模式?
了解每一个设计模式所解决的问题 了解模式的静态结构 了解模式的动态结构 查看当前设计系统易变的部分
.... .
设计模式的分类
创建者模式
有关对象创建的模式
结构型模式
描述对象构造和组成的方式
行为模式
描述一组对象交互的方式
.... .
者数据数据库联接代码。
.... .
依赖倒置原则
抽象不应该依赖于具体 具体应该依赖于抽象 抽象依赖于具体,降低了重用的可能性
.... .
结构化编程
面向对象的架构
.... .
里氏代换原则
在所有引用基类的地方,都可以用此基类的 子类替换,而不影响程序原来的功能
违背里氏代换原则将给程序带来不稳定性
油品计算框架 基于Jexcel的简易报表开发框架 Junit 设计
.... .
面向对象设计原则
开闭原则 针对接口编程原则 高内聚-低耦合原则 最少知识原则 类的单一职责原则 依赖倒置原则 里氏代换原则
.... .
开闭原则
扩展系统的行为时,不需要修改以前的代码, 而是扩展以前的代码