第七章-复用类-代理
时间:2019-09-15
本文章向大家介绍第七章-复用类-代理,主要包括第七章-复用类-代理使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
练习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()
总结:
代理是什么:
将一个成员置于所要构造的类中,在新类中暴露了该成员对象的所有方法。
只提供在成员对象的方法的某个子集。
原文地址:https://www.cnblogs.com/changlili/p/11525016.html
- 需要了解的pssh(r11笔记第28天)
- 二分查找算法基本思想
- Flyod 算法(两两之间的最短路径)
- HDUOJ-4104 Discount
- HDUOJ-----1085Holding Bin-Laden Captive!
- HDUOJ-----1098 Ignatius's puzzle
- 转--shell脚本备份mysql数据库
- NYOJ——————数的长度(斯特林公式的应用)
- 关于ssh命令的几个使用小技巧(r11笔记第27天)
- Golang语言社区--消息触发服务器启动基础模块分享
- NYOJ------汉诺塔(一)
- HDUOJ----Coin Change
- Golang语言社区--列出目录和遍历目录的方法
- HDUOJ-------单词数
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- laravel框架数据库配置及操作数据库示例
- laravel 输出最后执行sql 附:whereIn的使用方法
- laravel框架模型、视图与控制器简单操作示例
- Laravel关系模型指定条件查询方法
- 在laravel中使用with实现动态添加where条件
- laravel Model 执行事务的实现
- 在laravel中实现事务回滚的方法
- thinkphp5框架实现数据库读取的数据转换成json格式示例
- phpfpm的作用和用法
- 浅谈PHP5.6 与 PHP7.0 区别
- laravel执行php artisan migrate报错的解决方法
- Laravel统计一段时间间隔的数据方法
- laravel withCount 统计关联数量的方法
- 使用laravel和ECharts实现折线图效果的例子
- Laravel 将数据表的数据导出,并生成seeds种子文件的方法