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 策略模式的简单小例子,可以帮助了解策略模式的使用
java策略模式的小例子,学习java策略模式的简单例子,代码虽然简单不错很容易明白
利用java策略模式编写的一个排序方法切换,的小例子。用于学习策略模式是很好的方式。界面写的还可以,仅供大家参考学习
java策略模式示例代码,用于初学者学习使用,示例简单易懂
Java设计模式策略模式Demo
用简单的描述让你理解策略模式的概念 用生动的比喻让你看到它的精髓,附带案例
策略模式例子,纯代码,copy后即可运行; 1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。 2、一个系统需要动态地在几种算法中...
对应我博客的策略模式的源代码,可以参见我的博客!
这是一个Java 策略模式的demo 符合封装变化 针对接口编程 多用组合少用继承的OO原则
java 策略模式的源码,下载可以直接运行
JAVA策略模式详解
javase 设计模式的strategy pattern《JAVA与模式》之策略模式详解
这是一个基于JAVA的策略设计模式。松耦合,可扩展
根据讲义中策略模式的案例,设计和实现一个基于策略模式的角色扮演游戏。其中包括主要有角色类及其子类、相关的行为类集合和测试类等。通过本次实验,能够在掌握面向对象程序设计的基本思想基础上;深化理解Java ...
专题资料(2021-2022年)java策略模式.docx
策略模式在实际项目中的应用二,该测试demo为普通项目,导入build path一下lib目录下的jar包,然后运行测试类即可在控制台看到测试结果