现在需要封装一个算法,但是该算法有很多种不同的实现,比如,一个排序算法,可能有插入排序,冒泡排序,快速排序等不同的实现,而且要求这些算法由使用者来决定具体使用的是哪个算法,如何来设计呢?
这是,我们就会用到策略模式了,策略模式,就是将一个算法的不同实现封装成一个个单独的类,这些类实现同一个接口,使用者直接使用该接口来访问具体的算法。这个样子,使用者就可以使用不同的算法来实现业务逻辑了。策略模式的组件如下:
可见,策略模式中,Context(使用者)通过接口来访问算法的,这样,在运行中,由用户来决定应该选择哪个实现。
上一篇中说到模板方法模式,仔细观察下,模板方法模式和策略模式,是不是有种相似的部分呢?
假如现在,我们将Strategy换成一个抽象类,你是否觉得恍然大悟呢?其实,策略模式,和模板方法模式有很多相像的地方。模板方法模式中是将不变的逻辑放在父类中,子类只需要实现可变的部分。而在策略模式中,将所有的操作都由各个子类来实现。
所以,假如有下面一种情况存在,现在这个算法中有很多不变的部分,那我们该怎么做呢?
1、可以定义一个回调类SameCallBack,其中定义一个方法doTheSame(),这样,在每个具体实现类的execute方法中回调这个方法。
看下面类图:
这样,在Context的doExecute方法中可以如下
在每个具体的Strategy实现类中的execute方法,回调这个相同的方法,如下:
这种方式灵活性比较高。
当然,你也可以使用策略模式和模板模式结合的方式,定义一个抽象类,该抽象类实现Strategy接口,然后所有的具体类来继承该抽象类。在抽象类中实现算法的骨架部分。这样也可以实现。对应的类图如下:
这种方式虽然可行,但是没有上一种方式灵活,且这种方式也继承了模板方法模式的缺点,占用了继承。
分享到:
相关推荐
Strategy模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,Strategy模式的核心思想是定义一系列算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。 在给出的...
2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之Observer 9、设计模式之Strategy(策略) 10、设计模式之...
创建模式: 设计模式之Factory 设计模式之Prototype(原型) 设计模式之Builder 设计模式之Singleton(单态) ...设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor
《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...
Java设计模式中的Strategy模式是一种对象行为型模式,其主要目的是定义一系列算法,并将这些算法封装成独立的类,使得它们可以互相替换,让算法的变化独立于使用算法的客户。在Strategy模式中,核心思想是封装可能...
Java策略模式(Strategy)是一种行为设计模式,它使你能在运行时改变对象的行为。在给定的场景中,策略模式允许你选择一个算法或行为,而不是硬编码它们。这种模式适用于当一个系统需要在同一时间使用多种算法,或者...
Java设计模式是软件工程中的一种最佳实践,它总结了在特定场景下解决常见问题的经验,为程序员提供了可重用的解决方案。本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与...
《Java设计模式》是刘伟教授的一本关于设计模式的教材,主要面向高等学校的学生和对Java编程有深入兴趣的开发者。设计模式是软件工程中的一种重要思想,它封装了在特定场景下的问题解决方案,可以提高代码的可读性、...
Java设计模式中的Strategy模式是一种对象行为型模式,它允许在运行时动态地改变对象的行为。在上述例子中,Strategy模式被用来处理字符串替换的不同策略。这个模式的核心是定义一系列算法,并将每个算法封装到一个...
适合Java设计模式期末考试选择题复习,形式如下: 10.(单选题)Facade(外观)模式的意图是 正确答案: A A.希望简化现有系统的使用方法,你需要定义自己的接口 B.将一个无法控制的现有对象与一个特定借口相匹配。 C....
" JAVA 设计模式概述" JAVA 设计模式是指在软件设计过程中,为了提高代码的可维护性、灵活性和可扩展性所使用的一些惯用解决方案。JAVA 设计模式可以分为三种:创建模式、结构模式和行为模式。 1. 创建模式 创建...
这是JAVA设计模式中属于行为模式的部分,包括Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Strategy(策略模式)、State 、Observer(观察者模式)、Visitor...
Java设计模式是软件开发中的一种最佳实践,它总结了在解决特定问题时程序员们经常采用的有效方法。这个“JAVA设计模式-chm版”资源显然包含了关于Java设计模式的详细信息,便于理解和应用。设计模式是对常见问题的...
Java设计模式是软件工程中的一种最佳实践,它提供了一种在特定情况下解决常见问题的模板。这些模式在软件开发中被广泛使用,因为它们能够使代码更可读、可维护和可扩展。在这个名为"java设计模式程序源代码"的压缩包...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以被复用在各种不同的软件系统中。这个"JAVA设计模式(chm版)"是一个关于Java设计模式的电子书,采用CHM(Microsoft Compiled ...
策略(Strategy)模式是一种对象行为型设计模式,它允许程序在运行时动态地改变对象的行为。在Java中,策略模式通常通过定义一系列算法类来实现,这些类都实现一个公共接口或继承自一个抽象基类,使得它们可以互换...
Java设计模式是面向对象编程领域中的重要概念,它是一套被广泛接受并实践的解决软件设计问题的经验总结。设计模式并非具体的代码或库,而是一种描述在特定情况下,如何设计和实现软件组件的经典方法。这些模式是经过...
Java设计模式是软件工程中的一种最佳实践,它是一种在特定情境下解决常见问题的经验总结。这份"java设计模式PPT"资源提供了系统化的学习材料,旨在帮助开发者提升编程思维,理解如何有效地组织代码,提高软件的可...
Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可重用性、灵活性和可维护性。本高清教程深入浅出地讲解了Java中的各种设计模式,对于提升开发者的技术能力和面试表现...