- 14
- 0
- 约3.57千字
- 约 16页
- 2016-08-05 发布于河南
- 举报
9代理模式
第九讲 代理(Proxy)模式 场景 跟MM在网上聊天,一开头总是hi,你好,你从哪儿来呀?你多大了?身高多少呀?这些话,真烦人,写个程序做为我的Proxy吧,凡是接收到这些话都设置好了自动的回答,接收到其他的话时再通知我回答,怎么样,酷吧。 代理模式概述 代理模式给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。 代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下,客户不想或者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客户端分辨不出代理主题对象与真实主题对象。 代理模式可以并不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,被代理对象必须有系统的其他角色代为创建并传入。 代理模式的角色 抽象主题(Subject) 实际主题(RealSubject) 代理(Proxy) 代理模式的UML类图 代理模式示例 1.抽象主题(Subject): Geometry.java public interface Geometry{ public double getArea(); } 代理模式示例 2.实际主题(Real Subject): Trangle.java public class Triangle implements Geometry{ double sideA,sideB,sideC,area; public Triangle(double a,double b,double c) { sideA=a; sideB=b; sideC=c; } public double getArea(){ double p=(sideA+sideB+sideC)/2.0; area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)) ; return area; } } 代理模式示例 3.代理(Proxy):TriangleProxy.java public class TriangleProxy implements Geometry{ double sideA,sideB,sideC; Triangle triangle; public void setABC(double a,double b,double c) { sideA=a; sideB=b; sideC=c; } public double getArea(){ if(sideA+sideBsideCsideA+sideCsideBsideB+sideCsideA){ triangle=new Triangle(sideA,sideB,sideC); double area=triangle.getArea(); return area; } else return -1; } } 代理模式示例 4.应用 Application.java import java.util.Scanner; public class Application{ public static void main(String args[]) { Scanner reader=new Scanner(System.in); System.out.println(请输入三个数,每输入一个数回车确认); double a=-1,b=-1,c=-1; a=reader.nextDouble(); b=reader.nextDouble(); c=reader.nextDouble(); TriangleProxy proxy=new TriangleProxy(); proxy.setABC(a,b,c); double area=proxy.getArea();
原创力文档

文档评论(0)