Java设计模式之代理模式-举例加代码
Posted JIANGJIZE1999
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java设计模式之代理模式-举例加代码相关的知识,希望对你有一定的参考价值。
学习设计模式的意义:
学习java的设计模式对java初级阶段的学习会起到很大的作用,因为他灵活的运用了java的三大特性继承,抽象和多态,理解这些设计模式也对逻辑思维的训练意义很大,今天来说一下代理设计模式。
什么是代理设计模式:
代理模式是Java常见的设计模式之一。所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。
为什么要采用这种间接的形式来调用对象呢?:
一般是因为客户端不想直接访问实际的对象,或者访问实际的对象存在困难,因此通过一个代理对象来完成间接的访问。
举例:
在现实生活中,这种情形非常的常见,比如请一个律师代理来打官司,律师调用了自己打官司的方法,实际上方法里新建了你自己的对象然后,调用了你自己的打官司的方法,这就是‘代理’你去打官司了。
再比如买火车票不一定在火车站买,也可以去代售点,只不过代售点实现了一个售票员的身份,完成了售货员的功能。
优缺点:
优点: 1、职责清晰。 2、高扩展性。 3、智能化。
缺点: 1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。
代码演示:
步骤 1
创建一个名为谈判的接口,创建接口的目的是为下面那些实现了接口的类,可以共同实现接口的方法,并且还可以运用多态,实现函数返回的灵活性和方法调用的灵活性。
public interface Negotiation {
void negotiate();
}
//创建实现接口的实体类。
public class RealNegotiation implements Negotiation {
private String court;//法庭
public RealNegotiation (String court){
this.court= court;
negotiationFromCourt(court);
}
@Override
public void negotiate() {
System.out.println("negotiating in normal" + court);
}
private void negotiationFromCourt(String court){
System.out.println("Negotiating in court" + court);
}
}
创建ProxyNegotiation.java
public class ProxyNegotiation implements Negotiation{
private RealNegotiation realNegotiation;
private String court;
public ProxyNegotiation (String court){
this.court= court;
}
@Override
public void negotiate() {
if(realNegotiation== null){
realNegotiation= new RealNegotiation (court);
}
realNegotiation.negotiate();
}
}
步骤 3
当被请求时,使用 ProxyNegotiation 来获取 RealNegotiation 类的对象。
Demo.java
public class Demo {
public static void main(String[] args) {
Negotiation negotiation= new ProxyNegotiation ("协商资料");
// 协商将从法庭协商
negotiation.negotiate();
System.out.println("");
// 协商不需要从法庭协商
negotiation.negotiate();
}
}
步骤 4
执行程序,输出结果:
Negotiating in court 协商资料
negotiating in normal 协商资料
以上是关于Java设计模式之代理模式-举例加代码的主要内容,如果未能解决你的问题,请参考以下文章