策略模式属于行为模式,其意图是定义一系列算法,把他们一个个封装起来,并且使他们可以互相替换。
优点:
1.提供了管理相关的算法族的办法。
2.提供了可以替换继承关系的办法。
3.避免使用多重条件转移语句。
缺点:
1.客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
2.造成很多的策略类。
下面是一个示意的代码:
我们想输入一个数组,输出一下表格,用户可以有如下要求:
输出为:<table><tr><td>111<td/></tr><tr><td>222</td></tr></table>
输出也可能为:|111|222|333|
//TableExporter .java
public interface TableExporter {
public String getExported(String[] data);
}
//HTMLExporter
public class HTMLExporter implements TableExporter {
public String getExported(String[] data) {
if (data == null) {
return "";
}
StringBuilder sb = new StringBuilder();
sb.append("<table>");
for (int i = 0; i < data.length; i++) {
sb.append("<tr><td>").append(data[i]).append("</td></tr");
}
sb.append("</table>");
return sb.toString();
}
}
//Test.java
public class Test {
public static void main(String[] args) {
String[] data = {"111","222","333"};
TableExporter tb;
// tb = new HTMLExporter();
tb = new LineExporter();
System.out.println(tb.getExported(data));
}
}
分享到:
相关推荐
### Java初涉设计模式 #### 重要概念与背景 在软件工程领域,设计模式是一种用于解决常见问题的模板,能够帮助开发人员构建可维护、可扩展且高效的系统。本篇文章探讨的是面向对象编程语言Java中关于模拟鸭子游戏...
《漫谈设计模式》是一本专为Java开发者深入理解设计模式而编写的书籍。设计模式是软件工程中的...无论你是初涉设计模式的新手,还是已经有一定经验的老手,这本书都值得一读,它将成为你在Java设计模式领域的得力助手。
《Android源码设计模式解析与实战》是一本深入探讨Android系统源码中设计模式应用的专业书籍,适合希望提升技术能力、研究源码或学习设计模式的开发者。这本书以清晰的结构和实例,揭示了Android系统背后的软件工程...
《Head First设计模式》是一本深受开发者喜爱的设计模式学习书籍,它以独特的视觉化和易于理解的方式介绍了23种经典的设计模式。...无论你是初涉设计模式的新手,还是寻求提升的老兵,这本书都能为你提供宝贵的指导。
总的来说,这个压缩文件提供了一个全面的学习设计模式的资源库,无论你是初涉设计模式的新手还是寻求进一步提升的专家,都能从中受益。理解并应用设计模式将提升你的编程技巧,使你能够更好地应对复杂系统的设计挑战...
总之,《设计模式之禅(第2版)》是一本值得深入研读的书籍,无论你是初涉软件设计的新手,还是经验丰富的开发者,都能从中获益匪浅。通过学习本书,你将能更好地理解和运用设计模式,提升自己的编程技能,为软件...
在"ARM学习资料--适合初涉领域"这个资源中,你将能够了解到关于ARM处理器的基础知识,包括其架构原理、指令集、开发环境以及应用实例等。以下是一些可能涵盖的重要知识点: 1. **ARM架构概述**:ARM架构的核心特点...
书中详细阐述了如何利用设计模式优化会话bean,包括单例模式、工厂模式以及策略模式,以实现更好的状态管理和并发控制。 2. **实体bean模式**:实体bean用于持久化数据,与数据库交互。书中讨论了事务策略、激活和...
10. **最佳实践**:在使用StrutsMenu时,开发者应遵循最佳实践,如合理规划菜单层次,避免过于复杂的菜单结构,以及正确处理菜单的异步加载和缓存策略等。 通过理解以上知识点,开发者能够更好地掌握和运用Struts...
本书非常适合那些初涉设计模式或者希望深入理解设计模式的读者。它以一种非传统的学习方式呈现内容,结合了丰富的图表、幽默的对话和实际案例,使得学习过程不仅充满乐趣,而且容易理解。书中的例子和练习都以Java...
总的来说,【乐队管理系统--Ues.zip】是一个全面的Java开发项目实例,涵盖了数据库操作、MVC设计模式、Spring框架应用、测试策略以及部署配置等多个方面,对初级Java开发者来说是一个宝贵的实践和学习素材。...
在本文中,我们将深入探讨“Laravel开发-php-rest-models”这一主题,这是一个独立于框架的PHP REST模型,它提供了模式验证...无论你是初涉RESTful API,还是已经是一位经验丰富的开发者,这个库都值得你纳入工具箱。
《HiAuth-hurtlof_auth2.0集成框架详解》 在现代的互联网应用开发中,安全认证与授权是至关重要的环节...无论你是初涉认证授权领域的新人,还是经验丰富的开发者,都能从中受益,快速构建出符合安全标准的高质量应用。
Java及Java EE面试大全主要涵盖了Java语言的基础知识、数据结构、算法、设计模式以及Java EE的相关概念。以下是对这些知识点的详细阐述: 1. **数据结构**: - **链表**:链表是一种线性数据结构,其中的元素不是...
ChatGPT作为一款人工智能驱动的语言模型,以其强大的数据处理能力和算法优化,重新定义了信息传播的方式,对人们的思维方式和行为模式产生了深远影响。然而,尽管ChatGPT声称其服务具有客观中立性,但其训练数据主要...
【大数据与侦查模式变革设计研究】 大数据的兴起对犯罪侦查带来了深远的影响,推动了侦查模式的根本性变革。这种变革不仅仅是技术层面的更新,更是理念、方法和策略的全面升级。大数据时代,犯罪侦查需要适应复杂...
瑞典Uppsala大学的Johanson与Vahlne提出了国际化渐进程序理论,指出企业在面临诸多不确定性时,会采取逐步深入国际市场的策略,通过在不同阶段的涉入来降低风险和成本。 企业国际化的过程可以分为四个主要阶段:非...
《Python库nbgrams-1.0-py3-...无论你是初涉NLP的新手,还是经验丰富的专家,这个库都值得你去探索和利用。在实际项目中,结合nbgrams库,你将能够更深入地挖掘文本数据中的模式和信息,实现更复杂的自然语言处理任务。