4、学习面向对象——策略设计模式

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

//:interfaces/classprocessor/Apply.java

package interfaces.classprocessor;

importjava.util.*;

import staticnet.mindview.util.Print.*;

 

class Processor {

  public String name() {

    return getClass().getSimpleName();

  }

  Object process(Object input) { return input;}

}   

 

class Upcaseextends Processor {

  String process(Object input) { // Covariantreturn

    return ((String)input).toUpperCase();

  }

}

 

class Downcaseextends Processor {

  String process(Object input) {

    return ((String)input).toLowerCase();

  }

}

 

class Splitterextends Processor {

  String process(Object input) {

    // The split() argument divides a Stringinto pieces:

    returnArrays.toString(((String)input).split(" "));

  }

}   

 

public class Apply{

  public static void process(Processor p,Object s) {

    print("Using Processor " +p.name());

    print(p.process(s));

  }

  public static String s =

    "Disagreement with beliefs is bydefinition incorrect";

  public static void main(String[] args) {

    process(new Upcase(), s);

    process(new Downcase(), s);

    process(new Splitter(), s);

  }

} /* Output:

Using ProcessorUpcase

DISAGREEMENT WITHBELIEFS IS BY DEFINITION INCORRECT

Using ProcessorDowncase

disagreement withbeliefs is by definition incorrect

Using ProcessorSplitter

[Disagreement,with, beliefs, is, by, definition, incorrect]

*///:~

只要一个方法操作的是类,而非接口,那么就只能使用这个类及其子类,如果想要将这个方法应用于不在此继承结构专用的某个类,那么就行不通。而接口很大程度上放宽了这种限制。因此可以编写可复用性更好的代码。

创建一个能够根据所传递的参数对象的不同而具有不同行为的方法,被称为策略设计模式。这类方法包含所要执行的算法中固定不变的部分,而策略包含变化的部分。策略就是传递进去的参数对象,它包含要执行的代码。在例子中,Processor对象就是一个策略,在main()中可以看到有三种不同的类型策略应用到了String类型的s对象上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值