[color=red]【代理模式】为其他对象提供一种代理以控制对这个对象的访问[/color]
package com.demo.proxy;
public class Triangle implements Geometry {
double a,b,c;
public Triangle(double a,double b,double c){
this.a=a;
this.b=b;
this.c=c;
}
@Override
public double getArea() {
// TODO Auto-generated method stub
double p=(a+b+c)/2.0;
return Math.sqrt(p*(p-a)*(p-b)*(p-c));
}
}
package com.demo.proxy;
public class TriangleProxy implements Geometry {
double a,b,c;
Triangle triangle;
public void setABC(double a,double b,double c){
this.a=a;
this.b=b;
this.c=c;
}
@Override
public double getArea() {
// TODO Auto-generated method stub
if(a+b>c&&a+c>b&&b+c>a){
triangle=new Triangle(a,b,c);
//让所代理的对象调用getArea()方法
return triangle.getArea();
}else
return -1;
}
}
package com.demo.proxy;
import java.util.Scanner;
public class Application {
public static void main(String[] args) {
// TODO Auto-generated method stub
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();
System.out.println("面积是:"+area);
}
}