代码虽然很长,不过都是重复的!!
代码1 和 代码2 用2种思想去写,不知道代码2的思想优势体现在哪些方面,实在想不通才拿出来问的,至于顶贴的朋友,请将楼层留给正真回复的朋友谢谢!!代码1:
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) {
return ((String)input).toUpperCase();
}
}class Downcase extends Processor {
String process(Object input) {
return ((String)input).toLowerCase();
}
}class Splitter extends Processor {
String process(Object input) {
return Arrays.toString(((String)input).split(" "));
}
} class Apply2{
public static void process(Processor p, Object s) {
System.out.println("Using Processor " + p.name());
System.out.println(p.process(s));
}
}public class Test1{
public static String s ="Disagreement with beliefs is by definition incorrect";
public static void main(String[] args) {
Apply2.process(new Upcase(), s);
Apply2.process(new Downcase(), s);
Apply2.process(new Splitter(), s);
}
}代码2:
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) {
return ((String)input).toUpperCase();
}
}class Downcase extends Processor {
String process(Object input) {
return ((String)input).toLowerCase();
}
}class Splitter extends Processor {
String process(Object input) {
return Arrays.toString(((String)input).split(" "));
}
} class Apply2{
public static void process(Adapter p, Object s) {
System.out.println("Using Processor " + p.name());
System.out.println(p.process(s));
}
}class Adapter{
Processor mpr;
public Adapter(Processor mpr){
this.mpr = mpr;
}
public String name() {
return mpr.name();
}
Object process(Object input) { return mpr.process(input); }
}public class Test2{
public static String s ="Disagreement with beliefs is by definition incorrect";
public static void main(String[] args) {
Apply2.process(new Adapter(new Upcase()) , s); //这种通过过滤器般的编程思想在哪些方面有优势?我觉得还是代码1用起来比较方便~
Apply2.process(new Adapter(new Downcase()) , s);
Apply2.process(new Adapter(new Splitter()) , s);
}
}代码三(这是最原始的代码,更方便)
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 by definition incorrect";
public static void main(String[] args) {
process(new Upcase(), s);
process(new Downcase(), s);
process(new Splitter(), s);
}
}
代码1 和 代码2 用2种思想去写,不知道代码2的思想优势体现在哪些方面,实在想不通才拿出来问的,至于顶贴的朋友,请将楼层留给正真回复的朋友谢谢!!代码1:
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) {
return ((String)input).toUpperCase();
}
}class Downcase extends Processor {
String process(Object input) {
return ((String)input).toLowerCase();
}
}class Splitter extends Processor {
String process(Object input) {
return Arrays.toString(((String)input).split(" "));
}
} class Apply2{
public static void process(Processor p, Object s) {
System.out.println("Using Processor " + p.name());
System.out.println(p.process(s));
}
}public class Test1{
public static String s ="Disagreement with beliefs is by definition incorrect";
public static void main(String[] args) {
Apply2.process(new Upcase(), s);
Apply2.process(new Downcase(), s);
Apply2.process(new Splitter(), s);
}
}代码2:
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) {
return ((String)input).toUpperCase();
}
}class Downcase extends Processor {
String process(Object input) {
return ((String)input).toLowerCase();
}
}class Splitter extends Processor {
String process(Object input) {
return Arrays.toString(((String)input).split(" "));
}
} class Apply2{
public static void process(Adapter p, Object s) {
System.out.println("Using Processor " + p.name());
System.out.println(p.process(s));
}
}class Adapter{
Processor mpr;
public Adapter(Processor mpr){
this.mpr = mpr;
}
public String name() {
return mpr.name();
}
Object process(Object input) { return mpr.process(input); }
}public class Test2{
public static String s ="Disagreement with beliefs is by definition incorrect";
public static void main(String[] args) {
Apply2.process(new Adapter(new Upcase()) , s); //这种通过过滤器般的编程思想在哪些方面有优势?我觉得还是代码1用起来比较方便~
Apply2.process(new Adapter(new Downcase()) , s);
Apply2.process(new Adapter(new Splitter()) , s);
}
}代码三(这是最原始的代码,更方便)
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 by definition incorrect";
public static void main(String[] args) {
process(new Upcase(), s);
process(new Downcase(), s);
process(new Splitter(), s);
}
}
解决方案 »
- 对老师课堂上一个地方的讲解不清楚:计算学生的平均身高 ...
- 需要包含 XXXXX 的封闭实例,是啥情况?
- 请大家帮我看下这段java代码!十分感谢!
- jprofiler
- 怎么用Socket实现一个HTTP服务器啊?
- 问一个《JAVA编程思想(2e)》简体中文版里面的两个个练习题,谢谢!
- 能否提供一个画图时双缓冲的例子
- 急!如何使JTable中的某一列中的所有单元格只能输入数字?(急需源代码!)感谢!
- 向文件写操作,如何不覆盖原文件而只是添加内容?(简单问题)
- 如何把自己编好的.class文件拿给别人运行啊,如果别人没有装jdk?
- 求助:谁忙我解释一下,table中的复选框是怎么生成的???
- instanceof MS经常听到,什么意思? 看不懂API文档的说明..
楼主【llm0528】截止到2008-07-21 15:46:43的历史汇总数据(不包括此帖):
发帖的总数量:57 发帖的总分数:1160 每贴平均分数:20
回帖的总数量:49 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:56 结贴的总分数:1120
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:40
结贴的百分比:98.25 % 结分的百分比:96.55 %
无满意结贴率:0.00 % 无满意结分率:0.00 %
值得尊敬
代码2,Adapter模式,但却没有体现Adapter的优势,即将一个类的接口转化为另一个接口,使得原本接口不兼容的类可以一起工作。在这个例子中,啥用也没有,增加一层封装,让你看得眼花缭乱而已。但如果,有第三方的Processor,它的接口无法直接被Apply2.process()处理,使用Adapter,可以将这种不兼容隔离。
代码3,够用就好,过多的考虑设计模式,拓展性,很麻烦。