You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
public interface Strategy {
public int doOperation(int num1, int num2);
}
● 创建实现接口的实体类:分别是加、减、乘的类,里面封装了这三种算法
public class OperationAdd implements Strategy{
@Override
public int doOperation(int num1, int num2) {
return num1 + num2;
}
}
public class OperationSubtract implements Strategy{
@Override
public int doOperation(int num1, int num2) {
return num1 - num2;
}
}
public class OperationMultiply implements Strategy{
@Override
public int doOperation(int num1, int num2) {
return num1 * num2;
}
}
● 创建 Context 类 (Strategy类是Context的一部分——聚合关系)
public class Context {
private Strategy strategy;// Strategy类是Context的一部分
// 有参构造
public Context(Strategy strategy){
this.strategy = strategy;
}
public int executeStrategy(int num1, int num2){
return strategy.doOperation(num1, num2);
}
}
● 使用Context来改变策略,达到使用不同代码逻辑的作用
public class StrategyPatternDemo {
public static void main(String[] args) {
Context context = new Context(new OperationAdd());
System.out.println("10 + 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationSubtract());
System.out.println("10 - 5 = " + context.executeStrategy(10, 5));
context = new Context(new OperationMultiply());
System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
}
}
结果:
10 + 5 = 15
10 - 5 = 5
10 * 5 = 50
The text was updated successfully, but these errors were encountered:
1.UML图
统一建模语言(Unified Modeling Language,缩写UML)是非专利的第三代建模和规约语言。
UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。
分类:
● UML模型
○ 功能模型:从用户的角度展示系统的功能,包括用例图。
○ 对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类别图、对象图。
○ 动态模型:展现系统的内部行为。包括序列图,活动图,状态图。
● UML图
○ 结构性图形(Structure diagrams)强调的是系统式的建模:
■ 静态图(static diagram):包括类图、对象图、包图
■ 实现图(implementation diagram):包括组件图、部署图
■ 剖面图
■ 复合结构图
○ 行为式图形(Behavior diagrams)强调系统模型中触发的事件
■ 活动图
■ 状态图
■ 用例图
○ 交互性图形(Interaction diagrams),属于行为图形的子集合,强调系统模型中的资料流程
■ 通信图
■ 交互概述图
■ 时序图
■ 时间图
下面详细讲解类图
1.1 类图
作用:解析项目的系统结构和架构层次,可以简洁明了的帮助我们理解项目中类之间的关系。
类图的格式:
● 类名:粗体(类是抽象类则类名显示为斜体)
● 属性:
○ 格式:可见性 名称:类型[=默认值]
○ 可见性一般为public、private和protected,在类图分别用+、-和#表示
● 方法:
○ 格式:可见性 名称(参数列表 参数1,参数2) :返回类型
■ 可见性如上名称表达式的介绍
■ 名称就是方法名
■ 参数列表是可选的项,多参数的话参数直接用英文逗号隔开
■ 返回值也是个可选项,返回值类型可以说基本的数据类型、用户自定义类型和void。(如果是构造方法,则无返回类型)
类与类之间的关系:
泛化(继承)、实现、依赖、关联、聚合、组合
聚合:部分可以脱离整理而存在
组合:部分若脱离了整体,则不复存在
关联:长期性的
依赖:临时性的
2.设计模式
2.1 策略模式
定义一系列算法,将每个算法都封装起来,并且使他们之间可以相互替换。策略模式使算法可以独立于使用它的用户而变化(聚合)
策略模式的结构:
● 环境(Context)角色: 持有一个Strategy的引用;
● 抽象策略(Strategy)角色: 这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口;(关系是:实现或继承)
● 具体策略(ConcreteStrategy)角色: 包装了相关的算法或行为
使用步骤:(举例)
● 定义Strategy接口,包含抽象方法
● 创建实现接口的实体类:分别是加、减、乘的类,里面封装了这三种算法
● 创建 Context 类 (Strategy类是Context的一部分——聚合关系)
● 使用Context来改变策略,达到使用不同代码逻辑的作用
结果:
The text was updated successfully, but these errors were encountered: