java中代理设计模式和适配器模式

本文介绍了设计模式中的代理模式和适配器模式。代理模式通过为其他对象提供代理来控制对该对象的访问;适配器模式则使得两个不兼容的接口能够协同工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代理设计模式

为其它对象提供一种代理,以控制对该对象的访问。


//被代理接口(主题)

interface Shopping{

    public void shopping();

}

//代理类

class Proxy implementsShopping{

    private Shopping target;//目标,要代理对象

    public Proxy(Shopping target){

        this.target = target;

    }

    public void shopping(){

        System.out.println("开始找商品");

        System.out.println("比较商品的价格");

        System.out.println("确定要购买的商品");

        //if()

        target.shopping();

        System.out.println("完成本次购物");

    }

}

 

//被代理类

class Person implementsShopping{

    //让被代理类真正关注具体的业务逻辑

    public void shopping(){

        System.out.println("付钱,拿到自己心仪的商品");

    }

}

 

public class Test{

    public static void main(String[] args){

        Shopping s = new Person();

        Proxy p = new Proxy(s);

       p.shopping();

    }

}

 

适配器模式

//适配器模式

//让两个不兼容的接口可以一起工作。

public class Test29{

       public static void main(String[] args){

              PowerA a = new PowerAImpl();

              //connect(a);

              PowerB b = new PowerBImpl();

              PowerAdapter pa = new PowerAdapter(b);

              connect(pa);

       }

       //此方法只能接收PowerA接口,不兼容其它接口

       public static void connect(PowerA powerA){

              System.out.println("开始工作之前的准备");

              powerA.connect();

 

              //

       }

       /*

       public static void insert(PowerB powerB){

              powerB.insert();

       }

       */

}

//适配器:实现的接口表示要匹配的接口,内部维护的接口表示被匹配的接口

class PowerAdapterimplements PowerA{

       private PowerB powerB;

       public PowerAdapter(PowerB powerB){

              this.powerB = powerB;

       }

       public void connect(){

              powerB.insert();

       }

}

 

//电源A

interface PowerA{

       public void connect();

}

class PowerAImpl implementsPowerA{

       public void connect(){

              System.out.println("电源A已连接,开始工作");

       }

}

//电源B

interface PowerB{

       public void insert();

}

class PowerBImpl implementsPowerB{

       public void insert(){

              System.out.println("电源B已插入,开始工作");

       }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值