策略模式:创建一个能够根据所传递的参数对象的不同而具有不同行为的方法,称为策略模式;这类方法包含所要执行的算法中固定不变的部分,而“策略”包含变化的部分。策略就是传递进去的参数对象,它包含要执行的代码。
/*
* a simple example about Strategy model
* quote from thinking in java 5th page175
*/
package com.thinking.useinterface;
import java.util.Arrays;
class Processor {
public String name() {
return getClass().getSimpleName();
}
Object process(Object input) {
return input;
}
}
class Upcase extends Processor {
String process(Object input) { //convariant return
return ((String)input).toUpperCase();
}
}
class DownCase extends Processor {
String process(Object input) { //
return ((String)input).toLowerCase();
}
}
class Splitter extends Processor {
String process(Object input) {
return Arrays.toString(((String)input).split(" "));
}
}
public class Apply {
public static void process(Processor p, Object s)
{
System.out.println(" Using Processor " + p.name());
System.out.println(p.process(s));
}
public static String s = "Disagreement with beliefs is by definition incorrect";
public static void main(String[] args) {
process(new Upcase(), s);
process(new DownCase(), s);
process(new Splitter(), s);
}
}
分享到:
相关推荐
在《Head First设计模式》这本书中,第一章通过一个鸭子的例子来介绍策略模式。这个例子中,有各种各样的鸭子(例如:红头鸭、橡皮鸭等),每种鸭子的行为(如叫声、游泳、飞)可能会有所不同。这些不同的行为可以...
在提供的"简单的策略模式"文件中,我们可以期待看到以下内容: 1. 策略接口:定义了所有支持策略的公共行为。 2. 具体策略类:实现了策略接口,每种策略类实现一种特定的算法或行为。 3. 上下文类:使用策略接口,...
在这个名为"java策略模式小例子"的项目中,我们可以预期看到一个简单的示例,演示了如何在Java中应用策略模式。`Strategy(Game)`可能包含了一些不同的策略类,每个类代表一种特定的游戏策略,以及一个上下文(Context...
策略模式的核心思想是定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。这些算法都遵循一个共同的接口,使得客户端可以使用它们而不必关注具体实现。这样做的好处是提高了代码的可复用性、可扩展性...
PHP 设计模式实例之观察者模式、策略模式、简单工厂模式 PHP 设计模式实例之观察者模式、...观察者模式用于在对象之间定义一对多的依赖关系,策略模式用于定义一系列的算法,简单工厂模式用于提供一个创建对象的接口。
以下是一个简单的Java策略模式实现示例: ```java // 抽象策略 public interface Strategy { void execute(); } // 具体策略A public class StrategyA implements Strategy { @Override public void execute() ...
策略模式是一种行为设计模式,它允许开发者定义一些策略族,分别封装起来,每一个策略中的算法具有一定的独立性,分别在不同的上下文中完成不同的任务。策略模式通常由三个部分组成:策略接口、策略实现类、环境上...
自己编写的一个策略模式的简单例子,可以用于学习参考,同时本例子中还使用了泛型。导入到Eclipse中直接可以运行。同时此文件夹中还有一个关于策略模式的PPT,是张龙老师编写的,很不错! 我还写了一篇博文是和本...
本文将探讨三个重要的设计模式:抽象工厂模式、工厂方法模式以及策略模式,并结合一个实际的场景——手机加工厂,来具体阐述它们的应用。 首先,我们来看**抽象工厂模式**。这个模式主要用于创建相关或依赖对象的...
策略模式定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换,让算法独立于使用它的客户。例如,电商网站的优惠策略,可以根据不同的促销活动选择不同的计算折扣的策略。 这三种模式虽然在某些方面有...
让我们通过一个简单的实例来深入理解策略模式。假设我们有一个应用程序,需要对不同的数据进行排序。我们可以创建一个SortStrategy接口,定义一个sort方法。然后,我们可以创建多个ConcreteStrategy类,如BubbleSort...
下面是一个简单的策略模式实现的例子: ```java // 策略接口 public interface ShippingStrategy { double calculateShippingCost(double weight); } // 具体策略类1:国内快递 public class DomesticShipping ...
在这个“Android策略模式简单Demo”中,我们将深入理解如何在Java中实现并应用策略模式。 首先,策略模式的核心思想是定义一系列算法,并将每个算法封装起来,使它们可以相互替换。这些算法都遵循同一个接口,因此...
在给定的"设计模式之策略模式源码"工程中,我们可以看到通过一个简单的收银系统来展示策略模式的应用。收银系统是一个常见的业务场景,其中可能涉及多种结算策略,如折扣、满减、会员优惠等。通过策略模式,我们可以...
我们可以创建一个`DiscountFactory`类,它有一个静态方法`getDiscountStrategy`,根据传入的商品类型返回相应的折扣策略实例。 在实际应用中,当用户选择商品并结账时,`Cashier`会调用`DiscountFactory`获取相应的...
后端同学在开发过程中...这里给出策略模式的例子,以汉堡打折为原型设计,存在优惠券、买一送一、打折、免费等场景的时候,该如何精简代码? 对比枚举策略与简单工厂+策略模式的不同使用,抛砖引玉,引发你更多的思考
在软件设计模式中,"简单工厂模式"和"策略模式"是两种常用的设计模式,它们在不同的场景下有着各自的优势。本篇文章将探讨如何利用这两种模式实现简单的排序算法,以提高代码的可读性和可扩展性。 首先,简单工厂...
接下来,我们来看一个简单的例子。假设有一个`PaymentStrategy`接口,其中定义了`processPayment()`方法,有多个实现类如`CreditCardStrategy`、`PayPalStrategy`和`AlipayStrategy`。在Spring配置中,我们可以这样...
在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 在策略模式中,我们创建表示各种策略的对象和一个行为根据策略对象改变的上下文对象。策略对象改变上下文对象的执行算法。...
在这个项目中,可能包含了一个或多个工厂类,用于创建不同的对象,同时也可能有相应的策略模式实现,用于在运行时根据需求选择不同的策略。测试代码可以帮助我们理解这些模式如何在实际场景中工作,以及如何通过单元...