-复用类-代理

Posted changlili

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了-复用类-代理相关的知识,希望对你有一定的参考价值。

练习11:(3)修改 Detergent.java,让它使用代理。

一:我的答案:

 1 package com.learnJava.test;
 2 
 3 /**
 4  * @Author zhuchangli
 5  * @Date 2019/9/15
 6  **/
 7 public class DetergentDelegation 
 8 
 9     private Cleanser cleanser = new Cleanser();
10     private String s = "Cleanser ";
11     public void scrub()
12         cleanser.append(" Detergent.scrub()");
13         cleanser.scrub();
14     
15 
16     public void append(String a)
17         cleanser.append(a);
18     
19 
20     public void dilute()
21         cleanser.dilute();
22     
23 
24     public void apply()
25         cleanser.applay();
26     
27 
28     public void foam()
29         append("foam()");
30     
31 
32     public String toString()
33         return cleanser.toString();
34     
35 
36    public static void main(String [] args)
37         DetergentDelegation d = new DetergentDelegation();
38         d.dilute();
39         d.apply();
40         d.scrub();
41         d.foam();
42         System.out.println(d);
43         System.out.println("Testing base class");
44         Cleanser.main(args);
45 
46    
47 

运行结果:

Cleanserdilute()applay() Detergent.scrub()scrub()foam()
Testing base class
Cleanserdilute()applay()scrub()

使用继承时:

 1 package com.learnJava.test;
 2 
 3 /**
 4  * @Author zhuchangli
 5  * @Date 2019/9/14
 6  **/
 7 class Cleanser
 8     private String s = "Cleanser";
 9     public void append(String a)  s += a; 
10     public void dilute() append("dilute()"); 
11     public void applay()append("applay()");
12     public void scrub()append("scrub()");
13     public String toString()return s;
14 
15     public static void main(String [] args)
16         Cleanser x = new Cleanser();
17         x.dilute();
18         x.applay();
19         x.scrub();
20         System.out.println(x);
21     
22 
23 //洗涤剂
24 public class Detergent extends Cleanser
25     public void scrub()
26         append("Detergent.scrub()");
27         super.scrub();
28     
29 
30     // foam 泡沫
31     public void foam() append("foam()");
32 
33     public static void main(String [] args)
34         Detergent x = new Detergent();
35         x.dilute();
36         x.applay();
37         x.scrub();
38         x.foam();
39         System.out.println(x);
40         System.out.println("Testing base class");
41         Cleanser.main(args);
42     
43 

运行结果:

Cleanserdilute()applay()Detergent.scrub()scrub()foam()
Testing base class
Cleanserdilute()applay()scrub()

二:参考答案

 1 package com.learnJava.test;
 2 
 3 /**
 4  * @Author zhuchangli
 5  * @Date 2019/9/15
 6  **/
 7 
 8 class Cleanser11
 9     private String s = "Cleanser11";
10     public void append(String a)  s += a;
11     public void dilute() append(" dilute()");
12     public void apply() append(" apply()");
13     public void scrub() append(" scrub()");
14     public String toString() return s;
15 
16     public static void main(String [] args)
17         Cleanser11 x = new Cleanser11();
18         x.dilute();
19         x.apply();
20         x.scrub();
21         System.out.println(x);
22     
23 
24 
25 public class DetergentDelegation11 
26 
27     private String s = "DetergentDelegation11 ";
28     private Cleanser11 c11 = new Cleanser11();
29 
30     public void append(String a)
31         s += a;
32     
33 
34     public void dilute()
35         c11.dilute();
36     
37 
38     public void apply() c11.apply();
39 
40     public void scrub() 
41         append("DetergentDelegation11");
42         c11.scrub();
43     
44 
45     public void foam()
46         append(" foam()");
47     
48 
49     public String toString()
50         return s + " " + c11;
51     
52 
53     public static void main(String [] args)
54         DetergentDelegation11 d = new DetergentDelegation11();
55         d.dilute();
56         d.apply();
57         d.scrub();
58         d.foam();
59         System.out.println(d);
60         System.out.println("Testing base class");
61         Cleanser11.main(args);
62     
63 
64 
65 

运行结果:

DetergentDelegation11 DetergentDelegation11 foam() Cleanser11 dilute() apply() scrub()
Testing base class
Cleanser11 dilute() apply() scrub()

总结:

代理是什么:

将一个成员置于所要构造的类中,在新类中暴露了该成员对象的所有方法。

只提供在成员对象的方法的某个子集。

 

以上是关于-复用类-代理的主要内容,如果未能解决你的问题,请参考以下文章

《JAVA编程思想》学习笔记——第七章 复用类

《Java编程思想》笔记 第七章 复用类

第七章-复用类-继承语法-2初始化基类-带参构造器

[Think In Java]基础拾遗1 - 对象初始化垃圾回收器继承组合代理接口抽象类

-复用类-代理

第七章服用类