策略模式应用场所是什么? 就是在软件设计时,发现有
不同的算法(或操作过)在不同对象间经常变来变去,这是可以考虑使用策略模式。
注意是考虑用策略模式。 如果发现这些算法,不管怎么变化,总可以用
统一的较为简单的方法去调用这些算法,那么可以用策略模了。实现方法是:作一个抽象类标识为A,该类有一个统一调用其他算法的方法 标识为method(...)。 其他不同算法的 单独写一个类,并继承A,然后覆盖method(...),并在这个方法中调用具体实现了的算法。另外 要使用算法的类,都必须允许注入这些算法的公共调用方法的所在类,即上面中的A. 这样在使用时,如果发现某个类需要使用某个具体算法时,把相应算法类注入进去就可以了。
简单描述实现方法:
各自的算法用不同的类封装,但是这些类都必须继承并覆盖同一个父类,这个父类是个抽象类,他必须具有能统一调用这些算法的方法。 在使用时,哪些其他类要使用某些算法,就把这些算法的实例注入进去。当然了,使用算法的类,要注入的地方其相关类型,是这些算法的父类,而非具体算法类。
简单代码表示为:
使用模式前1 :
public method1(xx){//具体代码}
public method2(xx){//具体代码}
public method3(xx){//具体代码}
使用模式前2 :发现这些方法,都可用下面的方法进行调用
public method(xx)
使用模式 步骤1:
public abstract class A{ public method(xx)}
使用模式 步骤2:
public class B extends A {
private method1(xx) {//具体代码}
public method(xx) {method1(xx) }
}
public class C extends A {
private method2(xx) {//具体代码}
public method(xx) {method2(xx) }
}
public class D extends A {
private method2(xx) {//具体代码}
public method(xx) {method2(xx) }
}
使用模式 步骤2:
Class Use1 {
privater A a;//省略getter and setter.这表明允许注入算法的共共调用方法的所在类
public void userMethod(){a.method();}
//省略其他
}
Class Use2 {
privater A a;//省略getter and setter.这表明允许注入算法的共共调用方法的所在类
public void userMethod(){a.method();}
//省略其他
}
用户开始真正使用:
Use1 u1=new Use1();
//当发现此时u1需要使用 method2操作,
u1.setA(new C())
u1.userMethod();
说明:使用类,你可以根据需要存储N多种算法类实例,你也可以在运用类的实例化过程中,固定生成某些算法,总之根据你的需要了,可以变化。
分享到:
相关推荐
策略模式结合模板方法模式的设计思路 策略模式结合模板方法模式是策略模式的一种变形,目的是为了解决策略模式中的一些共性问题。在策略模式中,经常会出现这样一种情况,就是发现这一系列算法的实现上存在公共功能...
SpringBoot结合策略模式实战套路 策略模式是一种常用的设计模式,它可以使我们的代码更加灵活、可维护和可扩展。在SpringBoot项目中,策略模式可以与依赖注入机制相结合,实现更加灵活的业务逻辑处理。在本文中,...
设计模式之策略模式 鸭子问题 策略模式是一种经典的设计模式,通过鸭子问题,可以让学习者更好地了解设计模式的概念和实现。策略模式的主要思想是定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。...
策略模式(Template模式) 策略模式是设计模式中的一种 객체行为型模式,它定义了一系列算法,封装每一个算法,并使它们可以互相替换。策略模式使得算法可以独立于使用它的客户而变化。 概述 在软件开发中,经常...
策略模式和代理模式是设计模式中的两种常见模式,它们在软件开发中扮演着重要的角色,尤其是在JavaScript中,这两种模式提供了更加灵活和可维护的代码结构。 策略模式(Strategy Pattern)是一种行为设计模式,它...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式主要通过定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。 首先,策略模式的...
在"策略模式封装的几个加密解密算法源码"中,我们主要关注的是如何使用策略模式来封装常见的加密解密算法,如BASE64和MD5。 1. **BASE64编码**:BASE64是一种用于将二进制数据编码为ASCII字符的编码方式,以便在...
今天我们将探讨两种重要的设计模式:简单工厂模式和策略模式。这两种模式都是面向对象设计的核心概念,它们各自有着独特的优势和适用场景。 首先,我们来理解简单工厂模式。简单工厂模式是创建型设计模式的一种,它...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件工程中,我们经常遇到需要根据不同的条件或策略来执行不同算法的情况。策略模式允许我们将这些算法封装到独立的可互换的策略类中,使得客户端...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在软件开发中,我们经常遇到需要根据不同的条件或场景执行不同策略的情况。策略模式就是为了解决这类问题而诞生的,它将算法封装到具有共同接口的独立...
在“记事本 使用了策略模式和命令模式”这个主题中,我们将深入探讨这两种设计模式以及它们如何应用于记事本软件的实现。 首先,让我们了解策略模式。策略模式是一种行为设计模式,它允许在运行时选择算法或策略。...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常涉及接口或抽象类的实现,允许程序在运行时选择并应用不同的算法或策略。这种模式的核心在于将算法封装到独立的可互换的策略中...
在软件设计模式的世界里,"简单工厂模式"、"代理模式"和"策略模式"都是经典的设计模式,它们各自有着独特的应用场景和优缺点。本文将深入解析这三种模式的原理和区别,帮助读者理解它们在实际开发中的运用。 首先,...
策略模式是设计模式的一种,它允许我们在运行时动态地改变对象的行为。在这个"php设计模式-策略模式-例题学习"的例子中,我们将深入理解策略模式的运用及其在PHP中的实现。 首先,让我们来看看核心的类和接口: ...
策略模式是一种设计模式,它使你能在运行时改变对象的行为,通过将算法封装在独立的策略类中,实现了策略的可替换性。这种模式的核心思想是将策略对象的选取和执行算法的责任分离,使得策略对象可以根据不同的上下文...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通过定义一系列算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户。这种模式的主要优点是增加了灵活性...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中,我们创建表示各种策略的对象和一个行为根据...
本示例包含三个经典的设计模式:单例模式、建造者模式和策略模式,它们都是面向对象设计的重要组成部分,尤其在C#编程中广泛应用。 ### 单例模式 单例模式确保一个类只有一个实例,并提供一个全局访问点。这种模式...
C#是一种广泛应用的面向对象的编程语言,它支持多种设计模式,其中包括策略模式。策略模式是一种行为设计模式,允许我们在运行时根据需要改变一个对象的行为。 策略模式的核心思想是定义一系列的算法,并将每一个...