设计模式练习(11)——代理模式
来源:互联网 发布:创维酷开如何安装软件 编辑:程序博客网 时间:2024/06/11 00:27
代理模式
一、题目:
在某应用软件中,需要记录业务方法的调用日期,在不修改现有业务类的基础上,为每一个类提供一个日记记录代理类,在代理类中输出日志,如在业务方法Mehtod()的调用之前,输出“Method方法被调用,调用时间2016.11.18 11:11:11”,调用之后没有抛出异常则输出“Mehtod方法调用成功”,否则输出“Mehtod方法调用失败”,在代理类中调用真实业务类的业务方法,使用代理模式设计日志记录模块的结构,绘制类图并编程模拟实现。
(1)实现给出代理模式结构视图。
(2)给出该实例类图及代码实现。
二、所用模式结构视图:
三、实例类图:
四、实例实现代码:
(因为区分,所以在类的前面加了Gj19)
Service类:抽象服务类
**package ProxyPattern;
/**
* Service类:抽象服务类
* @author gong
*
*/
public interface Gj19Service {
void method();
}**
RealService:具体服务类
package ProxyPattern;/** * RealService:具体服务类 * @author gong */import java.text.SimpleDateFormat;import java.util.Date;import java.util.Random;public class Gj19RealService implements Gj19Service { @Override public void method() { try { Date date = new Date(); //format对象是用来以指定的时间格式格式化时间的 SimpleDateFormat from = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //format()方法是用来格式化时间的方法 String times = from.format(date); System.out.println("方法method()被调用,调用时间为:" + times); //用来产生除零异常来模拟method方法调用是否成功 Random random = new Random(); int a = random.nextInt(100); int b = random.nextInt(10); int c=a/b; System.out.println("方法method()调用成功"); } catch (Exception e) { System.out.println("方法method()调用失败"); } }}
Proxy类:代理服务类
package ProxyPattern;/** * Proxy类:代理服务类 * @author gong * */public class Gj19Proxy implements Gj19Service{ private Gj19RealService service = new Gj19RealService(); @Override public void method() { service.method(); }}
代理模式客户端测试类
package ProxyPattern;/** * 代理模式客户端测试类 * @author gong * */public class Gj19Client { public static void main(String[] args) { Gj19Service service; service = new Gj19Proxy(); service.method(); }}
五、运行结果:
0 0
- 设计模式练习(11)——代理模式
- 设计模式练习:代理模式
- 设计模式—代理模式(四)
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式—代理模式
- 设计模式之——代理模式(静态代理)
- 设计模式之——代理模式(动态代理)
- 设计模式——代理设计模式
- 设计模式——代理设计模式
- 每日设计模式——代理模式
- python sklearn 机器学习库的安装
- 任务执行顺序 贪心
- Codeforces Round #392 (Div. 2)C Unfair Poll
- 创建与运行Ionic项目
- 2017 ICM/MCM F Migration to Mars: Utopian Workforce of the 2100 Urban Society
- 设计模式练习(11)——代理模式
- NodeJS简述-随手记
- ndk链接本地静态库注意事项
- 计算属性(computed)
- 高德地图开发日记
- 1的个数
- Java实现数据库的groupby (list转map 百度面试题)
- Listview中显示不同的视图布局
- JavaScript——函数