设计模式 - 结构型 - 代理

1、概念说明:

代理模式,主要是针对一些核心业务,不方便直接提供服务,或者是某些业务较复杂所需要的功能不止是该业务可以提供支持的,需要通过代理类提供支撑,比较专业的人做专业的事情;这里可以举个例子,如小明想去买一本书,总不能直接去印刷社买吧,他只能去书店或者网购等渠道,这个时候书店或者网购就是代理书籍,这样做的好处是,印刷社专门去做印刷就好了,其他的不用管;

2、实战

/**

* 印刷社 、 书

*/

public class Book {

private StringbookName ="默认书名";

    public void setBookName(String bookName) {

this.bookName = bookName;

    }

public Book() {

printBook();

    }

protected void printBook(){

bookName ="心若菩提";

        System.out.println("打印制造书籍:"+bookName);

    }

/**

    * 对外提供卖书接口,提供给销售

    * @return

    */

    protected StringgetBook(){

return bookName;

    }

}

public interface GoBookInterface {

/**

    * 去书店买书

    */

    public void toBookstoreBuyBook();

    /**

    * 去淘宝商城买书

    */

    public void toTaobaoBuyBook();

}

public class ProxyGoBookInterfaceImplimplements GoBookInterface{

Bookbook =new Book();

    @Override

    public void toBookstoreBuyBook() {

System.out.println("在书店购买书籍:" +book.getBook());

    }

@Override

    public void toTaobaoBuyBook() {

System.out.println("在淘宝店购买书籍:" +book.getBook());

    }

}


public class Actuatory {

public static void main(String[] args) {

GoBookInterface proxy =new ProxyGoBookInterfaceImpl();

        proxy.toBookstoreBuyBook();

        proxy.toTaobaoBuyBook();

    }

}


3、思考

这里的举例是其实是静态代理模式来实现的,还有动态代理的概念,动态代理本质上是通过反射来决定接口实现类,也就是程序运行时才确定代理类,这样做的好处是非常灵活,可以根据不同场景来决定代理的业务;除了业务还有技术底层也用了代理模式,如spring aop的动态代理实现方式就有jdk动态代理(通过接口实现类实现)、cglib动态代理(通过类的方法实现,因为通过字节符实现,比jdk效率高)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 结构型模式主要总结了一些类或对象组合在一起的经典结构,这些经典的结构可以解决特定应用场景的问题。结构型模式包括:代...
    zhujunhua阅读 137评论 0 0
  • 1、定义 代理模式:为其他对象提供一种代理以控制对这个对象访问 写法 公共部分 1、静态代理 2、动态代理公共部分...
    陈桐Caliburn阅读 172评论 1 0
  • 定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理...
    UCCU_ebd1阅读 166评论 0 0
  •    代理类和真实类都继承抽象类,实现其接口,代理类里面有真实类的引用,实现也是调用真实类是实现。使用场景: 1....
    一吱米阅读 236评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139