前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式-代理模式 静态代理模式

设计模式-代理模式 静态代理模式

作者头像
潇洒
发布2023-10-20 10:25:11
1340
发布2023-10-20 10:25:11
举报
文章被收录于专栏:石头岛

静态代理

三个角色

静态代理的条件至少有三个角色

  1. 真实角色(RealObject)
  2. 代理角色(ProxyObject)
  3. 接口这三个(AbstractObject)

要求

  1. 真实角色与代理角色实现相同的接口。
  2. 代理类要持有真实角色的引用。 重点:真实角色、代理角色、接口的关系。代理接口实际上是抽象出所有真实角色的共有方法。

用法

1.创建真实角色 2.创建代理角色 3.代理角色.方法()。

注意:代理模式是要让代理类来使用委托类,所以是通过 new 代理类,在代理类中使用委托类,有点像回调函数的用法。

测试方法

代码语言:javascript
复制
/**
 * 功能描述:测试
 * @author liukai
 * @date 2015年11月13日 下午3:47:33
 * @version 1.0
 */
public class Test {
	public static void main(String[] args) {
		ServiceImpl serviceImpl = new ServiceImpl();
		IService iService = (IService) Proxy.getInstance(serviceImpl);
		iService.say();
	}
}

代理类

代码语言:javascript
复制
/**
 * 功能描述:代理类
 * @author liukai
 * @date 2015年11月13日 下午3:47:19 
 * @version 1.0
 */
public class Proxy implements IService{
	private IService iService;
	
	public Proxy() {
	}
	
	public Proxy(IService iService) {
		this.iService = iService;
	}
	
	
	@Override
	public void say() {
		System.out.println("Proxy.say()");
		iService.say();
	}
	
	public static IService getInstance(ServiceImpl object) {
		return new Proxy(object);
	}
}

实现类

代码语言:javascript
复制
/**
 * 功能描述:实现类
 * @author liukai
 * @date 2015年11月13日 下午3:47:27 
 * @version 1.0
 */
public class ServiceImpl implements IService{
	public ServiceImpl() {
		// TODO Auto-generated constructor stub
	}
	
	@Override
	public void say() {
		System.out.println("ServiceImpl.say()");
	}
}

接口

代码语言:javascript
复制
/**
 * 功能描述:接口
 * @author liukai
 * @date 2015年11月13日 下午3:47:06
 * @version 1.0
 */
public interface IService {
	public abstract void say();
}

静态代理类优缺点

  1. 优点:业务类只需要关注业务逻辑本身,保证了业务类的重用性。这是代理的共有优点。
  2. 缺点:
  3. 代理对象的一个接口只服务于一种类型的对象,如果要代理的方法很多,势必要为每一种方法都进行代理,静态代理在程序规模稍大时就无法胜任了。
  4. 如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 静态代理
    • 三个角色
      • 要求
        • 用法
          • 测试方法
            • 代理类
              • 实现类
                • 接口
                  • 静态代理类优缺点
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档