软件架构设计原则与模式PPT

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
30
其它常用的模式
• 单例(Singleton) • 适配器(Adapter) • 桥接(Bridge) • 门面(Facade) • 代理(Proxy) • 观察者(Observer) • 策略(Strategy)
31
两个忠告
• 设计模式的作用是解决问题,而不是为了模式而模式 • 我们研究设计模式的目的是实用,不是为了学术研究
哪一个帮助子类是代理者这一信息局部化的时候。
18
工厂方法(Factory Method)
19
工厂方法(Factory Method)
20
工厂方法(Factory Method)
创建者类图
21
工厂方法(Factory Method)
22
工厂方法:产品本身
Public abstract class Pizza{ String name; … void prepare(){ … } void bake(){…} void cut(){…} …
软件设计原则与模式
2015.08.11 1
目录
一、软件设计原则 二、设计模式介绍 三、设计书籍推荐
2
一、软件设计原则
3
单一职责原则
定义: 一个模块(类、函数)只负责一项职责 益处: 1.降低模块复杂度,提高可读性、可维护性 2.降低变更的频率、变更引起的风险
4
依赖倒置原则
定义: 高层模块不应依赖底层模块,底层模块也不应依赖高层模块,二者都应 该依赖抽象 益处: 1.提升系统的结构稳定性 2.低耦合
public class SimplePizzaFactory(String type){ Pizza pizza; if(type.equals(“cheese”)){ pizza = new CheesePizza(); } else if(type.equals(“greek”)){ pizza = new GreekPizza(); }… return pizza;
}
12
工厂(Factory)
Pizza oderPizza(String type){ Pizza pizza;
pizza.prepare(); pizza.bake(); pizza.cut(); … } 创建一个部件,来专门创建Pizza。我们称这个部件为工厂
13
简单工厂(Simple Factory)
32源自文库
三、软件设计书籍
33
软件设计书籍推荐
• 敏捷软件开发:原则、模式与实践(Robert C Martin) • Head First设计模式 • 设计模式:可复用软件软件设计的基础(GoF) • 代码大全(第二版)(Steve McConnell) • 实现领域驱动开发(Vanghn Vernon) • 企业应用架构模式(Martin Fowler)
17
工厂方法(Factory Method)
意图: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一 个类的实例化延迟到其子类。 适用性 • 当一个类不知道它所必须创建的对象的类的时候。 • 当一个类希望由它的子类来指定它所创建的对象的时候。 • 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将
5
里氏替换原则
定义: 所有引用基类的地方必须能透明地使用其子类的对象 益处: 1.提升结构稳定性 2.提高代码可读性、可维护性
6
接口隔离原则
定义: 客户端不应该依赖它不需要的接口 益处: 1.提升结构稳定性 2.提高代码可读性、可维护性
7
开闭原则
定义: 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过 修改已有的代码来实现变化 益处: 1.提升系统运行稳定性 2.减少测试、修改等工作量
}
14
使用简单工厂后
15
使用简单工厂后
16
简单工厂(Simple Factory)
LNPizzaFactory lnFactory = new LNPizzaFactory(); PizzaStore lnStore = new PizzaStore(lnFactory); lnStore.orderPizza(‘cheese’); SXPizzaFactory lnFactory = new SXPizzaFactory(); PizzaStore sxStore = new PizzaStore(sxFactory); sxStore.orderPizza(‘cheese’); …
8
二、设计模式介绍
9
什么是设计模式
• 软件设计中的成功经验 • 软件设计中的交流语言 • 特定的软件设计上下文中,针对特定问题的解决方案 • 可复用软件开发的基础
10
如何创建对象?
1.new xxx() 2.简单工厂(Simple Factory) 3.工厂方法(Factory Method)
}
23
工厂方法(Factory Method)
创建者类
24
工厂方法(Factory Method)
产品类
25
工厂方法(Factory Method)
26
依赖与依赖倒置
27
依赖与依赖倒置
28
依赖倒置原则
定义: 高层模块不应依赖底层模块,底层模块也不应依赖高层模块,二者都应 该依赖抽象
29
依赖与依赖倒置
11
new xxx()
最简单做法
看到了new,就会想到“具体”。
当有一群相关的具体类时,通常会写出以下的代码:
Pizza oderPizza(String type){ Pizza pizza; if(type.equals(“cheese”)){ pizza = new CheesePizza(); } else if(type.equals(“greek”)){ pizza = new GreekPizza(); } pizza.prepare(); pizza.bake(); pizza.cut(); …
34
• 介绍了软件设计的几个原则:单一职责、依赖倒置、里氏替换、接 口隔离和开闭原则
• 介绍了简单工厂模式、工厂方法模式的使用,列举了一些常用的设 计模式
• 推荐了基本软件设计方面的书籍
35
36
相关文档
最新文档