Java设计模式

Java静态代理模式

静态代理是指,代理类在程序运行前就已经定义好.java源文件,其与目标类的关系在程序运行前就已经确立。在程序运行前代理类已经编译为.class文件。

静态代理

在idea中创建java工程,

工程名称:ch01-staticproxy

⒈定义业务接口

定义业务接口UsbSell(目标接口),其中含有抽象方法sell(int amount), sell是目标方法。

⒉定义接口实现类

目标类UsbKingFactory(金士顿u盘),该类实现了业务接口。

⒊代理商TaoBao

TaoBao就是一个代理类, 代理厂家销售u盘

⒋代理商WeiShang

WeiShang就是一个代理类, 代理厂家销售u盘

⒌客户端调用者,购买商品类

使用代理的访问关系图:

静态代理的缺点

⒈代码复杂,难于管理

代理类和目标类实现了相同的接口,每个代理都需要实现目标类的方法,这样就出现了大量的代码重复。如果接口增加一个方法,除了所有目标类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。

⒉代理类依赖目标类,代理类过多

代理类只服务于一种类型的目标类,如果要服务多个类型。势必要为每一种目标类都进行代理,静态代理在程序规模稍大时就无法胜任了,代理类数量过多。