【代理模式】—— 业务中介

代理模式,提供了控制目标对象的访问接口。

一、关键点

1)先看下这个模式点关键点:

【代理模式】—— 业务中介_第1张图片

中介: 该模式的主要特点就是实现了中介的效果,委托者处理了被委托者的事务,以中介的形式对外提供访问的接口;

解耦:因为该模式的是以中介的形式进行的,这样就将委托者和被委托者解耦开来了,从而达到保护被委托者的目的。

 

2)我们再看下它的类图关系:

【代理模式】—— 业务中介_第2张图片

Subject: 被为类的抽象对象;

RealSubject:真实的被委托对象的实现类;

ProxySbject:代理的类,持有真实代理者的引用,并对外提供访问方式。

 

二、实现

2.1 Subject 被委托者与委托者的公共接口

public abstract class Subject {

    public abstract void visit();
}

2.2 RealSubject 实际的被委托对象

public class RealSubject extends Subject {

    @Override
    public void visit() {
        /** do somethings */
    }
}

2.3 ProxySubject 代理对象

public class ProxySubject extends Subject {
    private Subject mTargetSubject;

    public ProxySubject(Subject subject) {
        mTargetSubject = subject;
    }

    @Override
    public void visit() {
        mTargetSubject.visit();
    }
}

2.4 Client 客户端类 

public class Client {

    public static void main(String[] args) {
        RealSubject realSubject = new RealSubject();
        ProxySubject proxySubject = new ProxySubject(realSubject);
        proxySubject.visit();
    }
}

 

三、小结 

3.1 调用关系 该模式的特点就是改变了调用的方式,由原来的直接访问变成了通过中介的 “间接” 访问方式;

3.2 解耦 该模式做到了使得委托与被委托者的解耦合,从而不影响两者的独立变化,也对被委托者起到了一定的保护作用。

 

 

你可能感兴趣的:(设计模式)