黑马程序员——对象、接口——策略设计模式
来源:互联网 发布:led矩阵灯 编辑:程序博客网 时间:2024/05/29 15:51
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
策略设计模式:创建一个能够根据所传递的参数对象的不同,而具有不同行为的方法,这叫做策略设计模式。
下面用一个例子来说明。
import java.util.*;class Processor {public String name() {return getClass().getSimpleName();}Object process(Object input){ return input;}}class Upcase extends Processor {String process (Object input){ //Covariant returnreturn ((String)input).toUpperCase();}}class Downcase extends Processor {String process (Object input){return ((String)input).toLowerCase();}}class Splitter extends Processor {String process (Object input){//The split() argument divides a String into pieces: return Arrays.toString(((String)input).split(" "));}}public class Apply {public static void process (Processor p, Object s) {System.out.println(" Using professor " + p.name());System.out.println(p.process(s));}public static String s = "Disagreement with beliefs is by different incorrect";public static void main(String[] args){process(new Upcase(),s);process(new Downcase(),s);process(new Splitter(),s);}}/*Output:Using professor UpcaseDISAGREEMENT WITH BELIEFS IS BY DIFFERENT INCORRECTUsing professor Downcasedisagreement with beliefs is by different incorrectUsing professor Splitter[Disagreement, with, beliefs, is, by, different, incorrect]*/上例中,Apply.process() 方法可以接受任何类型的processor,这便是策略设计模式。process方法包含算法中不变的部分,而策略包含变化的部分。在这里策略便是传递进去的参数对象,其包含了要执行的代码。
0 0
- 黑马程序员——对象、接口——策略设计模式
- 黑马程序员——对象、接口——适配器设计模式
- 黑马程序员—Java面向对象(抽象类、模板方法设计模式、接口、多态、内部类)
- 黑马程序员——学习日志5面向对象(static关键字,单例设计模式,抽象类,接口)
- 黑马程序员—面向对象(接口)
- 设计模式——策略对象
- 黑马程序员-策略设计模式
- 黑马程序员—接口
- 黑马程序员—— 装饰设计模式
- 黑马程序员——设计模式
- 黑马程序员——设计模式
- 黑马程序员——设计模式
- 黑马程序员——设计模式
- 黑马程序员——设计模式
- 黑马程序员 —— 装饰设计模式
- 黑马程序员——设计模式
- 黑马程序员——设计模式总览
- 黑马程序员——java设计模式
- 测试图片
- 深入理解BootStrap Item11 -- 导航页(navbar)
- Corba开发之基于Java实现Service与Client
- 114 linux ubuntu开机卡在checking battery state
- XML笔记二
- 黑马程序员——对象、接口——策略设计模式
- PullRefreshView
- hdoj--5500--Reorder the Books(技巧)
- iOS(一)UI的appIcon和BrandAsset(LaunchImage)
- 第11周-可着色接口Colorable类
- sqlite的用法
- c++ 11 多线线程系列-----------生产者消费者
- Adapter(适配器)设计模式
- mds_stores不能关闭