《设计模式》对Strategy模式的意图描述:定义一系列算法,把他们封装起来,并可相互替换,使算法可独立于使用他的客户而变化。
《设计模式解析》实例:
1.未使用Strategy模式做法:
java 代码 使用继承
- public
class
TaskController{
-
- public
void
process(){
- SaleOrder so = null
;
- switch
(country){
- case
us : so =
new
UsSaleOrder();
- case
en : so =
new
EnSaleOrder();
- }
- so.process();
- }
- }
-
- class
UsSaleOrder
extends
SaleOrder{}
- class
EnSaleOrder
extends
SaleOrder{}
2.使用Strategy模式
java 代码
- public
class
TaskController{
- public
void
process(){
- CalcTax myTax = getTaxRules(country);
- SaleOrder so = new
SaleOrder();
- so.process(myTax);
- }
- }
-
- class
SaleOrder{
- public
void
process(CalcTax taxToUse){
- taxToUse.taxAmount();
- }
- }
-
- abstract
class
CalcTax{
- abstract
public
double
taxAmount();
- }
-
-
- class
UsTax
extends
CalcTax{}
- class
EnTax
extends
CalcTax{}
3.好处
a.简化更大、更复杂程序
b.可独立于SaleOrder使用,更小的操作性
- "狂放不羁"
的补充不错,添加进来了~
-
- 策略模式体现出了OO设计原则:
-
- 1
多用组合来实现动态的添加行为,而少用继承。继承使得耦合性增加。(favor compostion than inheritance)
-
- 2
面向抽象编程,而不要具体实现编程。(programe to
interface
,not to implementation)
-
- 3
策略模式是把各种可能变化的东西(算法)进行了encapsulate,这样就实现了变化的部分和保持不变的部分分离,进而减低代码的耦合性。
分享到:
相关推荐
设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx设计模式学习笔记--Flyweight享元模式.docx
设计模式学习笔记-命令模式
Java 版设计模式学习笔记-java-design-patterns
C++20设计模式学习笔记-第7章桥接模式学习代码
Python学习笔记--皮大庆,非常适合零基础入门。对应英文版本《How to think like a computer scientist》
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
python爬虫学习笔记-scrapy框架(1) python scrapy 爬虫 python爬虫学习笔记-scrapy框架(1) python scrapy 爬虫 python爬虫学习笔记-scrapy框架(1) python scrapy 爬虫 python爬虫学习笔记-scrapy框架(1) python ...
系统架构设计师学习笔记-第二章.docx系统架构设计师学习笔记-第二章.docx系统架构设计师学习笔记-第二章.docx系统架构设计师学习笔记-第二章.docx系统架构设计师学习笔记-第二章.docx系统架构设计师学习笔记-第二章....
系统架构设计师学习笔记-第二章.pdf系统架构设计师学习笔记-第二章.pdf系统架构设计师学习笔记-第二章.pdf系统架构设计师学习笔记-第二章.pdf系统架构设计师学习笔记-第二章.pdf系统架构设计师学习笔记-第二章.pdf...
J2EE学习笔记--DAO设计模式基础.txt
zookeeper云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-...
《C++20设计模式》学习笔记-第6章适配器模式学习代码
《C++20设计模式》学习笔记-第8章组合模式-配套学习代码