多线程中静态代理设计模式的体现

静态代理

什么是静态代理?

静态代理是一种设计模式

为什么有静态代理?

他的作用是在不改变原有方法的基础上,增强方法,经典的应用场景包括拦截器,通知等,如果都没有接触过,举生活中的例子,电商的核心是买卖商品,而电商代理可以更好的帮助商家提供售前和售后服务,电商只关注买卖商品即可。

如果使用静态代理?

  1. 创建一个接口
  2. 真实角色创建一个实现类实现该接口,实现核心任务
  3. 代理角色创建一个实现类实现该接口,核心任务嵌入到增强方法中
  4. 创建真实角色对象
  5. 创建代理角色对象,真实角色作为入参
  6. 代理角色调用增强方法

静态代理案例

 接口:

package staticproxy.learn;

// 1.电子商铺
public interface ElectronicStore {
	// 采购
	void vurchasing();

	// 卖出
	void sellOut();
}

真实角色类:

package staticproxy.learn;

// 2. 商家
public class StoreBoss implements ElectronicStore {

	@Override
	public void vurchasing() {
		System.out.println("采购商品");
	}

	@Override
	public void sellOut() {
		System.out.println("卖出商品");
	}

}

代理角色类:

package staticproxy.learn;

// 3. 商铺代理
public class StoreProxy implements ElectronicStore {
	private ElectronicStore electronicStore;

	public StoreProxy(ElectronicStore electronicStore) {
		super();
		this.electronicStore = electronicStore;
	}

	@Override
	public void vurchasing() {
		System.out.println("根据销量排序列出采购推荐");
		electronicStore.vurchasing();
	}

	@Override
	public void sellOut() {
		System.out.println("提供24小时的售前服务");
		electronicStore.sellOut();
		System.out.println("提供及时的售后服务");
	}

}

入口类:

package staticproxy.learn;

public class RunStoreProxy {

	public static void main(String[] args) {
		// 4
		ElectronicStore electronicStore = new StoreBoss();
		// 5
		StoreProxy storeProxy = new StoreProxy(electronicStore);
		// 6
		storeProxy.vurchasing();
		storeProxy.sellOut();
	}

}

多线程中静态代理

  1. 自定义类实现Runnable接口,重写run方法
  2. Thread类(代理角色)同样继承了Runnable接口
  3. Thread类对象调用start方法增强了run方法的运行,增强效果是开辟了一个新的线程异步执行run方法业务逻辑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值