美文网首页android适配
代理模式那些事

代理模式那些事

作者: AndYMJ | 来源:发表于2022-10-09 16:41 被阅读0次

直接上代码

public class MarkCompany implements InvocationHandler {

private Objectfactory;

public Object getFactory() {

return factory;

}

public void setFactory(Object factory){

this.factory = factory;

}

//通过Proxy获得动态代理

    public Object getProxyIn(){

return Proxy.newProxyInstance(factory.getClass().getClassLoader(),

factory.getClass().getInterfaces(),this);

}

//通过动态代理对象进行增强

    @Override

    public Object invoke(Object o, Method method, Object[] objects)throws Throwable {

doSthAfter();

Object invoke = method.invoke(factory, objects);

doSthBefore();

return invoke;

}

private void doSthAfter(){

Log.i("TAG","doSthAfter: MarkCompany精美包装,快递一条龙服务");

}

private void doSthBefore(){

Log.i("TAG","doSthBefore: MarkCompany根据需求,进行市场调研和产品分析");

}

}

public class AaFactoryimplements ManToolsFactory{

@Override

    public void saleManTools(String size) {

Log.i("TAG","AaFactory saleManTools: "+"按需定制一个size为"+size+"的女model");

}

}

public class Alivenimplements WomanToolsFactory {

@Override

    public void saleWomanTools(float length) {

doSthAfter();

womanToolsFactory.saleWomanTools(length);

doSthAfter();

}

private void doSthAfter(){

Log.i("TAG"," Aliven doSthAfter: 精美包装,快递一条龙服务");

}

private void doSthBefore(){

Log.i("TAG","Aliven doSthBefore: 根据需求,进行市场调研和产品分析");

}

private WomanToolsFactorywomanToolsFactory;

public Aliven(WomanToolsFactory womanToolsFactory){

this.womanToolsFactory = womanToolsFactory;

}

}

public class BbFactory implements WomanToolsFactory{

@Override

    public void saleWomanTools(float length) {

Log.i("TAG","BbFactory saleManTools: "+"按需定制一个size为"+length+"的男model");

}

}

public interface ManToolsFactory {

void saleManTools(String size);

}

//代理对象

public class Mark implements ManToolsFactory ,WomanToolsFactory{

public ManToolsFactoryfactory;

public Mark(ManToolsFactory manToolsFactory){

factory = manToolsFactory;

}

@Override

    public void saleManTools(String size) {

doSthAfter();

factory.saleManTools(size);

doSthBefore();

}

private void doSthAfter(){

Log.i("TAG","Mark doSthAfter: 精美包装,快递一条龙服务");

}

private void doSthBefore(){

Log.i("TAG","Mark doSthBefore: 根据需求,进行市场调研和产品分析");

}

@Override

    public void saleWomanTools(float length) {

}

private WomanToolsFactorywomanToolsFactory;

public Mark(WomanToolsFactory womanToolsFactory){

this.womanToolsFactory = womanToolsFactory;

}

}

public interface WomanToolsFactory {

void saleWomanTools(float length);

}

在需要的地方使用对应的方法

private void factory(){

//静态代理

        ManToolsFactory manToolsFactory =new AaFactory();

Mark mark =new Mark(manToolsFactory);

//静态代理

        mark.saleManTools("D");

//静态代理

        WomanToolsFactory womanToolsFactory =new BbFactory();

Aliven aliven =new Aliven(womanToolsFactory);

aliven.saleWomanTools(10f);

//动态代理

//举例1

        WomanToolsFactory womanToolsFactory1 =new BbFactory();

MarkCompany markCompany =new MarkCompany();

markCompany.setFactory(womanToolsFactory1);

WomanToolsFactory employ1 = (WomanToolsFactory)markCompany.getProxyIn();

employ1.saleWomanTools(12f);

//举例2

        ManToolsFactory manToolsFactory1 =new AaFactory();

markCompany.setFactory(manToolsFactory1);

ManToolsFactory employ2 = (ManToolsFactory)markCompany.getProxyIn();

employ2.saleManTools("111");

}

相关文章

  • 代理模式那些事

    直接上代码public class MarkCompany implements InvocationHandle...

  • 代理模式

    设计模式之代理模式 什么是代理模式? 指的事代理对象为其他对象提供代理以控制对被...

  • java代理模式的那些事

    java代理模式-登场 什么是代理模式? 代理模式是java中的一种设计模式,它其实就是设置一个中间环节来代理你要...

  • Java面试经典题目六(网络知识及设计模式)

    设计模式(必知必会) 【1】你知道那些设计模式? 答:单例模式、观察者模式、MVC模式、工厂模式、桥接模式、代理模...

  • 设计模式

    单例模式 模板方法模式 工厂模式 代理模式 静态代理 JDK动态代理

  • 设计模式

    单例模式 代理模式 静态代理 jdk动态代理 cglib动态代理 工厂模式 适配器模式 建造者模式 观察者模式

  • kube-proxy的3种模式

    userspace代理模式 iptables代理模式 IPVS代理模式 https://kubernetes.io...

  • 第4章 结构型模式-代理模式

    一、代理模式简介 二、代理模式3个角色 三、代理模式的优点 四、代理模式的实例(游戏代练)

  • 理解代理模式

    原创博客地址 简介 代理模式,也叫做委托模式,分为:静态代理动态代理 代理模式也是平时比较常用的设计模式之一,代理...

  • 结构型 代理模式(文末有项目连接)

    1:什么是代理模式 2:没用代理模式时的实例 3:使用代理模式将其解耦(静态代理) 3:使用代理模式将其解耦(动态...

网友评论

    本文标题:代理模式那些事

    本文链接:https://www.haomeiwen.com/subject/ptcdartx.html