题目:
修改Detergent.java, 让它使用代理。
解答:
先展示Detergent.java 代码:
// Detergent.java 文件
class Cleanser {
private String s = "Cleanser";
public void append(String a) {
s += a;
}
public void dilute() {
append(" dilute() ");
}
public void apply() {
append(" apply() ");
}
public void scrub() {
append(" scrub() ");
}
public String toString() {
return s;
}
public static void main(String[] args) {
Cleanser x = new Cleanser();
x.dilute(); x.apply(); x.scrub();
System.out.println(x);
}
}
public class exerciseThree extends Cleanser{
public void scrub() {
append(" Detergent.scrub() ");
super.scrub();
}
public void foam() {
append(" foam() ");
}
public static void main(String[] args){
exerciseThree three = new exerciseThree();
three.dilute();
three.apply();
three.scrub();
three.foam();
System.out.println(three);
System.out.println("Testing base class");
Cleanser.main(args);
}
}
结果如下:
根据上面代码,修改来完成这题目:
class Cleanser {
private String s = "Cleanser";
public void append(String a) {
s += a;
}
public void dilute() {
append(" dilute() ");
}
public void apply() {
append(" apply() ");
}
public void scrub() {
append(" scrub() ");
}
public String toString() {
return s;
}
public static void main(String[] args) {
Cleanser x = new Cleanser();
x.dilute(); x.apply(); x.scrub();
System.out.println(x);
}
}
public class exerciseEleven {
// 代理:
// 这是继承与组合之间的中庸之道,因为我们将一个成员对象置于所要构造的类中 (就像组合).
// 但与此同时我们在新类中暴露了该成员的所有方法 (就像继承).
private Cleanser cleanser = new Cleanser();
public void append(String a) {
cleanser.append(a);
}
public void dilute() {
cleanser.dilute();
}
public void apply() {
cleanser.apply();
}
public String toString() {
return cleanser.toString();
}
public void scrub() {
append(" DetergentDelegation.scrub() ");
cleanser.scrub();
}
public void foam() {
append(" foam() ");
}
public static void main(String[] args){
exerciseEleven three = new exerciseEleven();
three.dilute();
three.apply();
three.scrub();
three.foam();
System.out.println(three);
System.out.println("Testing base class: ");
Cleanser.main(args);
}
}
结果如下:
如果觉得不错,就用点赞或者关注或者留言,来代替五星好评~
谢谢各位~