博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java策略模式简单例程
阅读量:7142 次
发布时间:2019-06-28

本文共 1536 字,大约阅读时间需要 5 分钟。

本代码拷贝自《Java编程思想第四版》接口一章。

//: interfaces/classprocessor/Apply.javapackage interfaces;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 return    return ((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 Processor " + p.name());    System.out.println(p.process(s));  }  public static String s =    "Disagreement with beliefs is by definition incorrect";  public static void main(String[] args) {    process(new Upcase(), s);    process(new Downcase(), s);    process(new Splitter(), s);  }} /* Output:Using Processor UpcaseDISAGREEMENT WITH BELIEFS IS BY DEFINITION INCORRECTUsing Processor Downcasedisagreement with beliefs is by definition incorrectUsing Processor Splitter[Disagreement, with, beliefs, is, by, definition, incorrect]*///:~

Apply.process()方法可以接受任何类型的Processor,并将其应用到一个Object对象上,像这样创建一个能够根据所传递的参数对象的不同而具有不同行为的方法,被称为策略模式。该模式中包含固定部分和变化部分,在这里,固定部分是String s, 而变化部分是不同的Processor,Processor就是一个策略,根据策略的不同,得到不同的结果。

转载于:https://www.cnblogs.com/bejour/p/3352151.html

你可能感兴趣的文章
我的友情链接
查看>>
获得指定日期【月初和月末】
查看>>
Angular动画
查看>>
谈谈redis,memcache的区别和具体应用场景
查看>>
redis安装开发使用
查看>>
Java注解技术
查看>>
ArangoDB 3.2 Beta 版本发布,3项新特性为独家所有!
查看>>
java读取xml文件字段值
查看>>
5-3 8 shell介绍 命令历史 补全 别名 通配符 重定向
查看>>
分布式应用的各基本领域及开发技术概要
查看>>
python文件管理
查看>>
Flex布局兼容知识点总结
查看>>
Truffle 3.0部署智能合约至Ethereum节点
查看>>
Hadoop-HBase安装和配置
查看>>
go-xorm报错(expect \d+ desination arguments in Scan,but 1)
查看>>
1.4 TCPIP网络之网络层
查看>>
hive
查看>>
如何在Chrome development tool里查看C4C前台发送的请求细节
查看>>
Docker入门系列之三:如何将dockerfile制作好的镜像发布到Docker hub上
查看>>
Missing artifact javax.transaction:jta:jar:1.0.1B
查看>>