GoF23种设计模式之行为型模式之策略模式
1概述
2适用性
(2)需要使用一个算法的不同变体的时候。
(3)算法使用了客户不应该知道的数据的时候。以避免暴露复杂的、与算法相关的数据结构。
(4)一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现的时候。将相关的条件分支移入它们各自的Strategy类中以代替这些条件语句。
3参与者
(2)ConcreteStrategy:实现Strategy接口的某种具体算法。
(3)Context:用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Stategy访问它的数据。
4类图
5示例
package cn.lynn.strategy;public abstract class DBHelper {public abstract void crud();}
ConcreteStrategy
package cn.lynn.strategy;public class JdbcTemplateImpl extends DBHelper {@Overridepublic void crud() {System.out.println("使用JDBC方式操作数据库!");}}
package cn.lynn.strategy;public class HibernateFactoryImpl extends DBHelper {@Overridepublic void crud() {System.out.println("使用Hibernate持久化方式操作数据库!");}}
Context
package cn.lynn.strategy;public class Context {private DBHelper dbHelper;public Context(DBHelper dbHelper) {this.dbHelper = dbHelper;}public void execute() {dbHelper.crud();}
}
Client
package cn.lynn.strategy;public class Client {public static void main(String[] args) {Context context = new Context(new JdbcTemplateImpl());context.execute();context = new Context(new HibernateFactoryImpl());context.execute();}}
Result
使用JDBC方式操作数据库!
使用Hibernate持久化方式操作数据库!
转载于:https://www.cnblogs.com/innosight/archive/2013/06/13/3271181.html
GoF23种设计模式之行为型模式之策略模式相关推荐
- GoF23种设计模式之行为型模式之解释器模式
一.概述 给定一种语言和其文法的一种表示,再定义一个解释器,该解释器使用表示来解释语言中的句子. 二.适用性 当需要解释一种语言,并且可以将该语言中的句子表示 ...
- 备战面试日记(3.2) - (设计模式.23种设计模式之创建型模式)
本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.6 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文章 ...
- 备战面试日记(3.4) - (设计模式.23种设计模式之行为型模式)
本人本科毕业,21届毕业生,一年工作经验,简历专业技能如下,现根据简历,并根据所学知识复习准备面试. 记录日期:2022.1.12 大部分知识点只做大致介绍,具体内容根据推荐博文链接进行详细复习. 文 ...
- 【Java】Java与GoF-23种设计模式
文章目录 设计模式概述 GoF-23种设计模式 设计模式的分类 设计模式的原则 设计模式在JDK的部分体现 Singleton Factory Abstract factory Adapter Com ...
- GOF23种设计模式在Java中的应用(part 3)
本文接续:GOF23种设计模式在Java中的应用(part 2) 行为型模式 行为型模式关注系统中对象之间的相互交互.,研究系统在运行时对象之间的相互通信和协作,进一步明确对象的职责,共有11种模式. ...
- GOF23种设计模式在Java中的应用(part 1)
第二部分:GOF23种设计模式在Java中的应用(part 2) 一.GOF来源及简介 1.1 GOF23种设计模式简介 <Design Patterns: Elements of Reusab ...
- 【设计模式系列24】GoF23种设计模式总结及软件设计7大原则
设计模式总结及软件设计七大原则 设计模式系列总览 前言 软件设计7大原则 开闭原则(Open-Closed Principle,OCP) 里氏替换原则(Liskov Substitution Prin ...
- GOF23种设计模式在Java中的应用(part 2)
本文接续part1:GOF23种设计模式在Java中的应用(part 1) 结构型模式 结构型模式: – 核心作用:是从程序的结构上实现松耦合,从而可以扩大整体的类结 构,用来解决更大的问题. – 分 ...
- GOF23种设计模式你知道是什么吗?都有什么作用?
一.GOF简介 GOF是设计模式的经典名著Design Patterns: Elements of Reusable Object-Oriented Software(中译本名为< ...
最新文章
- centernet2019.11.05
- 数据挖掘中的概念描述
- el表达式与jstl的用法
- Django搜索工具——全文检索
- [论文阅读] TransFuse: Fusing Transformers and CNNs for Medical Image Segmentation
- Apache 配置SSL网站
- nodejs-基础:路由基础
- OpenCV源码解析之动态内存管理CvMemStorage与CvSeq
- 什么是TTL电平和cmos电平?ttl电平和cmos电平的区别是什么?
- 第一部分 移动终端芯片概述
- ctfshow_密码3
- 公众号如何用微信红包吸粉而不被封号?实战24天10万粉
- 李宏毅学习笔记35.GAN.06.Tips for Improving GAN
- Api 数据自动入库
- 雷军:同事格式化了我的电脑,让我走上当CEO的“不归路”
- 微信7.0fiddler、Charles抓包报HTTPS证书信任问题通报
- Windows 2008R2 +MDT2013+WDS(1)
- 1095: 统计元音(函数专题)
- 【Stable Diffusion | AI 绘画】手把手教你体验--AI 生成唯美二次元
- 2022华为开发者大赛北区决赛在1024程序员节北京峰会成功举行
热门文章
- 我的网页设计(腾讯网页面制作编写)
- python爬虫获取下一页url_Python爬虫获取页面所有URL链接过程详解
- Linux用户和用户组和文件权限介绍
- MySQL执行计划EXPLAIN详解
- Golang 实现求素数【 输入N,求N内素数个数 】
- OpenCV计算机视觉实战(Python版)_006边缘检测
- 500万数据mysql_mysql 单表500万数据经过处理后新增到新表
- linux 软件 runtime,Objective-C中runtime机制的应用
- 射击比赛(java)
- 是什么职位_2021国家公务员考试职位表出炉!你真的了解什么是公务员吗?