代理模式:
通过引入一个代理对象(Proxy)来控制对真实对象(RealSubject)的访问。代理对象与真实对象实现相同的接口,通过代理对象的接口调用,客户端可以间接地与真实对象进行交互。
意义:
1、避免在不必要时创建昂贵的对象实例。
2、提供一种简单的方式来管理对真实对象的访问权限。
3、通过代理层降低客户端与真实对象的耦合度。
角色:
主题接口(Subject):真实对象和代理对象都实现该接口,以确保它们可以互换。
真实主题(RealSubject):实现了主题接口,包含具体的业务逻辑。
代理(Proxy):实现了主题接口,持有对真实主题的引用,控制对其的访问。
小明想要购买一套房子,他决定寻求一家房屋中介来帮助他找到一个面积超过100平方米的房子,只有符合条件的房子才会被传递给小明查看。
要求:按下述描述完成任务,需要提供源代码和运行结果截图。
输入描述:
第一行是一个整数 N(1 ≤ N ≤ 100),表示可供查看的房子的数量。
接下来的 N 行,每行包含一个整数,表示对应房子的房屋面积。
输出描述:
对于每个房子,输出一行,表示是否符合购房条件。如果房屋面积超过100平方米,输出 "YES";否则输出 "NO"。
public interface HomePurchase {
void requestPurchase(int area);
}
public class HomeBuyer implements HomePurchase{
public void requestPurchase(int area){
System.out.println("Yes");
}
}
public class HomeAgentProxy implements HomePurchase{
private HomeBuyer homeBuyer = new HomeBuyer();
public void requestPurchase(int area){
if(area>100){
homeBuyer.requestPurchase(area);
}else{
System.out.println("no");
}
}
}
测试
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
HomeAgentProxy homeAgentProxy = new HomeAgentProxy();
int n = sc.nextInt();
for(int i = 0;i<n;i++){
int area = sc.nextInt();
homeAgentProxy.requestPurchase(area);
}
sc.close();
}
}


224

被折叠的 条评论
为什么被折叠?



