设计模式之策略模式
2009-12-22 22:20
239 查看
在java学习中常被人们说的继承关系真的是一个很不错的东西. 从面向对象的思想去理解继承,子类可以拥有父类的所有public 方法(行为)跟属性 . 这让我们在设计程序时,可以把公共相同的经常要使用的方法写在父类中,这好比Object拥有一个toString()方法一样,这样做的好处就是我们在程序中都有一个toString()方法。 因为在java中所有的类的父亲都是Object.
现在我们做个假设, 比如我们写了一个Computer(电脑)类, 可以给每一台电脑都有的公共行为,计算处理. (电脑可以浏览网页,可以看电影听音乐,,但不是所有的电脑都可以,比如ktv的点歌电脑,它只能用于点歌曲,是一种专门为某种服务而存在的特殊电脑),所以我们只给Computer类定义了处理计算的行为Calculation()
1.Computer类code:
package org;
/**
* 抽象父类
*
* @author Administrator
*
*/
public abstract class Computer {
Movies movies;
/**
* 默认的计算方法,每一个计算机都有
*
* @return
*/
public String Calculation() {
return "我会计算处理程序";
}
/**
* 提高一个Set方法用于获取看电影这个方法
*/
public void setMovies(Movies movies) {
this.movies = movies;
}
}
2.于此同时我们还在Movies(看电影的接口)
package org;
/**
* 看电影行为接口
*
* @author Administrator
*
*/
public interface Movies {
/**
* 看电影的方法
* @return
*/
public String Look();
}
3.在接口中我们定义了一个看电影的方法 Look()
4.接口的实现类PC类code:
package org;
public class PC implements Movies {
@Override
public String Look() {
return "我可以看电影";
}
}
写到这里我们的策略模式差不多就完成了,我们写了一个测试类MyPc:
package org;
public class MyPc extends Computer {
public static void main(String[] args) {
MyPc pc = new MyPc();
String Calculation = pc.Calculation();// 我可以计算
System.out.println(Calculation);
Movies movies = new PC();
pc.setMovies(movies);
String getMovies = pc.movies.Look(); // 我可以看电影
System.out.println(getMovies);
}
}
在MyPc里面我们拥有父类的计算能力也同时拥有看电影的能力,如果那天是个用于专门用途的特殊计算机我们不设置pc.setMovies(movies);就行了,如果制造了了功能强大的pc只要在父类中添加一个接口引用就行了.
策略模式的优点:
可以把公共的行为与特殊的行为很好的分开, 互补影响, 公共的行为我们可以很好的利用java中的继承关系得以很好的利用,特殊的行为,我们通过在父类的添加声明接口的引用,在给一个Set()方法用于获取引用,接口中定义特殊的行为。
现在我们做个假设, 比如我们写了一个Computer(电脑)类, 可以给每一台电脑都有的公共行为,计算处理. (电脑可以浏览网页,可以看电影听音乐,,但不是所有的电脑都可以,比如ktv的点歌电脑,它只能用于点歌曲,是一种专门为某种服务而存在的特殊电脑),所以我们只给Computer类定义了处理计算的行为Calculation()
1.Computer类code:
package org;
/**
* 抽象父类
*
* @author Administrator
*
*/
public abstract class Computer {
Movies movies;
/**
* 默认的计算方法,每一个计算机都有
*
* @return
*/
public String Calculation() {
return "我会计算处理程序";
}
/**
* 提高一个Set方法用于获取看电影这个方法
*/
public void setMovies(Movies movies) {
this.movies = movies;
}
}
2.于此同时我们还在Movies(看电影的接口)
package org;
/**
* 看电影行为接口
*
* @author Administrator
*
*/
public interface Movies {
/**
* 看电影的方法
* @return
*/
public String Look();
}
3.在接口中我们定义了一个看电影的方法 Look()
4.接口的实现类PC类code:
package org;
public class PC implements Movies {
@Override
public String Look() {
return "我可以看电影";
}
}
写到这里我们的策略模式差不多就完成了,我们写了一个测试类MyPc:
package org;
public class MyPc extends Computer {
public static void main(String[] args) {
MyPc pc = new MyPc();
String Calculation = pc.Calculation();// 我可以计算
System.out.println(Calculation);
Movies movies = new PC();
pc.setMovies(movies);
String getMovies = pc.movies.Look(); // 我可以看电影
System.out.println(getMovies);
}
}
在MyPc里面我们拥有父类的计算能力也同时拥有看电影的能力,如果那天是个用于专门用途的特殊计算机我们不设置pc.setMovies(movies);就行了,如果制造了了功能强大的pc只要在父类中添加一个接口引用就行了.
策略模式的优点:
可以把公共的行为与特殊的行为很好的分开, 互补影响, 公共的行为我们可以很好的利用java中的继承关系得以很好的利用,特殊的行为,我们通过在父类的添加声明接口的引用,在给一个Set()方法用于获取引用,接口中定义特殊的行为。
相关文章推荐
- 设计模式-策略模式
- JAVA设计模式之策略模式
- 《head first 设计模式》之策略模式
- 【设计模式】——策略模式之赌球风波
- 学了一招半式-策略模式(设计模式)
- java设计模式之策略模式
- 《您的设计模式》(CBF4LIFE)之“策略模式”【整理】
- Android设计模式之策略模式
- 设计模式之Strategy(策略)
- 研磨设计模式之 策略模式-2
- 设计模式之模板方法模式和策略模式
- 初学者学Java设计模式(二)---------策略模式
- 设计模式解析(第二版)笔记7 设计模式的原则与策略
- Java设计模式(十二) 策略模式
- 程序设计模式 —— 策略模式
- Android设计模式——策略模式之源码使用场景(三)
- 设计模式——策略模式
- 设计模式C++实现(2)——策略模式
- java设计模式——策略模式
- 设计模式之策略(strategy)模式