head first对策略模式的定义是:封装一系列算法,并把它们包装起来,使他们可以相互替换。在该书的第一章节模拟鸭子游戏里面,讲用策略模式改写,但本身用了代理这个模式,这里我理解的是一般使用策略模式就有一定程度的使用代理模式。看下面的例子。
这是一个代理模式的例子
package pattern.detegate;
public interface SubJect {
public abstract void request();
}
package pattern.detegate;
public class RealSubJect implements SubJect {
public void request() {
System.out.println("这里表示真实的对象");
}
}
package pattern.detegate;
public class ProxySubject implements SubJect {
private RealSubJect realSubJect;
public void preRequest() {
// .............
}
public void request() {
preRequest();
if (realSubJect == null) {
realSubJect = new RealSubJect();
}
realSubJect.request();
postRequest();
}
public void postRequest() {
// .............
}
}
package pattern.detegate;
public class TestDetegate {
/**
* @param args
*/
public static void main(String[] args) {
ProxySubject proxy=new ProxySubject();
proxy.request();
}
}
这里将的是一个代理模式的简单的例子,一个接口,一个实现类,一个代理类,一个测试类。代理类实际上是一个中间的角色,实际上做事情的还是realSubJect!如果说这是一个代理模式!那么我在网络上看别人对策略模式的理解的一个例子,大致如下:
public interface Person {
public void speakLanguage();
}
public class Chinese implements Person {
public void speakLanguage() {
System.err.println("I speak Chinese!");
}
}
public class StrategyPerson {
private Person person;
public StrategyPerson(Person person){
this.person = person;
}
public void speakLanguage(){
person.speakLanguage();
}
}
public class TestMain {
public static void main(String[] args){
Person person = new Chinese();
StrategyPerson sp = new StrategyPerson(person);
sp.speakLanguage();
}
}
这个例子的作者说这是策略模式,但我感觉和我的代理模式好像是一样的,对代理模式和策略模式,我有点混淆了。。。
还是策略模式本身在设计的时候就包含了代理模式,代理模式这是策略模式的一个小小的体现呢?期待在工作的过程中能慢慢的搞清楚这个问题!
分享到:
相关推荐
以下是一个简单的Java策略模式实现示例: ```java // 抽象策略 public interface Strategy { void execute(); } // 具体策略A public class StrategyA implements Strategy { @Override public void execute() ...
在这个名为"java策略模式小例子"的项目中,我们可以预期看到一个简单的示例,演示了如何在Java中应用策略模式。`Strategy(Game)`可能包含了一些不同的策略类,每个类代表一种特定的游戏策略,以及一个上下文(Context...
Java策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常涉及到定义一系列算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户。这个"java策略模式示例....
总结来说,这个Java策略模式排序算法的例子展示了如何利用设计模式来实现动态行为选择,同时涵盖了三种经典的排序算法。通过这种方式,开发者可以更方便地在不同排序算法之间切换,适应不同的性能需求或特定场景。...
在提供的"java策略模式源代码"中,我们可以预期包含以下几个关键组成部分: 1. **策略接口(Strategy Interface)**:这是所有策略类都需要实现的接口,定义了一组相关或相互排斥的操作。例如,`SortingStrategy` ...
在Java中,策略模式允许我们定义一组算法或策略,并将每个策略封装为一个类,使得它们可以互换,而不会影响到客户端代码。这种模式的核心在于"策略",即一系列可互相替换的算法或行为。 策略模式的主要优点包括: ...
策略模式是设计模式的一种,它在Java编程中广泛应用于处理算法的封装和选择。策略模式的核心思想是将算法封装到不同的类中,使得算法的变化独立于使用它的客户端。这种模式可以提供更多的灵活性,使得程序在运行时...
Java策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通常通过定义一系列算法类并让它们之间可以互换来实现。这种模式的关键在于将算法的使用与算法的实现分离开来,使得系统能够...
在Java中,策略模式主要通过定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。这种模式的核心是策略接口和实现策略的类。 策略模式的关键组成部分包括: 1. **...
在"JAVA策略模式实现"的例子中,我们可能会有一个`Strategy`接口或抽象类,它定义了一组通用的操作,例如处理邮件的策略。然后,我们可以创建多个具体的策略类,如`SimpleMailStrategy`、`PriorityMailStrategy`和`...
通过下载的"DesignPattern"压缩包,你可以查看和学习Java策略模式的具体实现。这个源码可能包含了多个策略类、策略接口和使用策略模式的上下文类,以及示例代码来演示如何在运行时切换策略。通过阅读和理解这些代码...
策略模式例子,纯代码,copy后即可运行; 1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。 2、一个系统需要动态地在几种算法中...
后端同学在开发过程中...这里给出策略模式的例子,以汉堡打折为原型设计,存在优惠券、买一送一、打折、免费等场景的时候,该如何精简代码? 对比枚举策略与简单工厂+策略模式的不同使用,抛砖引玉,引发你更多的思考
在Java中,策略模式通过定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换,让算法独立于使用它的客户而变化。这种模式通常用于处理多种可能的算法或行为选择场景,避免硬编码,增加代码的灵活性和可...
在Java中,策略模式主要通过定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户而变化。 首先,策略模式的核心是策略接口和实现策略接口的具体策略类。在Java中,我们可以...
Java策略模式是一种设计模式,它将具体算法或行为封装到独立的可互换的策略类中,使得客户端可以在运行时选择不同的策略来执行。这种模式主要用于处理那些在系统中经常变化的行为,允许算法的变化独立于使用它的...
在Java中,策略模式通常用于将算法封装到不同的类中,使得可以根据需要动态选择并应用这些算法。本示例将详细介绍如何通过两种方法实现策略模式:一种是通过Map存储方式,另一种是通过配置文件加反射方式。 首先,...