设计模式:适配器模式和代理模式的区别
发布网友
发布时间:2022-04-29 20:34
我来回答
共2个回答
懂视网
时间:2022-04-14 08:53
代理模式:为其他对象提供一种代理以控制对这个对象的访问。
还是来个图表示一下:
这里设想了一个简单的卖房子的场景。在没有代理的情况下,房子的拥有者想要卖房子,需要自己发布信息,带买家看房,办理交接手续等事情。这时候房主发现这样太麻烦了。于是他请来了代理HouseProxy,代理负责除必须房主参加的办理手续之外的所有事情。
这正是代理模式应用场景中的:智能指引,指当调用真实的对象时,代理处理另外的一些事情。
对比装饰模式,感觉非常相近,所以才会有之前一直提到的文章。代理模式感觉是一个代理处理了所有其他的事情,装饰模式是需要一系列各种各种的“能人”,各取所长。
实现代码很简单了:
/**
* Created by OneCoder on 2014/11/24.
*/
public class HouseOwner implements ISellHouse {
@Override
public void sellHouse() {
System.out.println("Sell my house.") ;
}
}
/**
* Created by OneCoder on 2014/11/24.
*/
public class HouseProxy implements ISellHouse {
private ISellHouse seller;
public HouseProxy(ISellHouse seller) {
this.seller = seller ;
}
@Override
public void sellHouse() {
System.out.println("Proxy: Publish the information.");
System. out.println("Proxy: Contact the buyer.");
seller.sellHouse();
System. out.println("Proxy: Get commision.");
}
}
似乎没什么可说的,OneCoder自我感觉是可以区分和使用这两种设计模式了,目的达到了。
PS:
1、最近博客更新的比较慢,家里的事情比较多,不过学习是一定要坚持的,哪怕是龟兔赛跑,我也在前进。
2、博客最近流量超标(15G/月),原因是遭到来自IP:114.215.138.184(爱论文网?)的不间断爬取。精力有限,经济有限(已经又充了流量。),所以,OneCoder准备慢慢把博客完全搬家到github.io上,这个过程也许很漫长。。。
爬虫可以。。。没完没了的爬。。就不必了吧。。。。
原文地址:乱学设计模式——代理模式, 感谢原作者分享。
热心网友
时间:2022-04-14 06:01
这是之前我的博客总结的:
Proxy,代理模式:为其他对象提供一种代理以控制对这个对象的访问。
例如:经典的体现在Spring AOP切面中,Spring中利用了俩种代理类型。
其实,代理也分为静态和动态,但是我们一般常用动态,因为静态代理秀不起来
Adapter,适配器模式:将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。
其中对象的适配器模式是各种结构型模式的起源,分为三种:类,对象,接口的适配器模式。
结一下三种适配器模式的应用场景:
类的适配器模式:当希望将一个类转换成满足另一个新接口的类时,可以使用类的适配器模式,创建一个新类,继承原有的类,实现新的接口即可。
对象的适配器模式:当希望将一个对象转换成满足另一个新接口的对象时,可以创建一个Wrapper类,持有原类的一个实例,在Wrapper类的方法中,调用实例的方法就行。
接口的适配器模式:当不希望实现一个接口中所有的方法时,可以创建一个抽象类Wrapper,实现所有方法,我们写别的类的时候,继承抽象类即可。
区别:很明显,适配器模式是因为新旧接口不一致导致出现了客户端无法得到满足的问题,但是,由于旧的接口是不能被完全重构掉的,因为我们还想使用实现了这个接口的一些服务。那么为了使用以前实现旧接口的服务,我们就应该把新的接口转换成旧接口。相比于适配器的应用场景,代理就不一样了,虽然代理也同样是增加了一层,但是,代理提供的接口和原本的接口是一样的,代理模式的作用是不把实现直接暴露给client,而是通过代理这个层,代理能够做一些处理。
...适配器,代理,工厂,单例,命令)常用设计模式【建议新手收藏】_百度知 ...
适配器模式适配器模式允许不同接口的对象协同工作。以ListView为例,ArrayAdapter作为桥梁,使各种数据源(如Array和Cursor)能以ListView期望的接口呈现。适配器模式分为类适配和对象适配,前者通过继承和实现接口实现,后者则通过关联或委托。代理模式代理模式通过创建代理对象控制对真实对象的访问。例如,Activity...
适配器模式和代理模式的区别
区别:很明显,适配器模式是因为新旧接口不一致导致出现了客户端无法得到满足的问题,但是,由于旧的接口是不能被完全重构掉的,因为我们还想使用实现了这个接口的一些服务。那么为了使用以前实现旧接口的服务,我们就应该把新的接口转换成旧接口。相比于适配器的应用场景,代理就不一样了,虽然代理也同样是...
spring动态数据源使用的设计模式
spring动态数据源使用的设计模式有单例模式、工厂模式、代理模式、观察者模式、模板方法模式、装饰者模式、适配器模式、策略模式、桥接模式、访问者模式。1、单例模式 单例模式(Singleton Pattern):在Spring框架中,单例模式是最常见的设计模式之一。通过单例模式,Spring保证了每个Bean只有一个实例,可以...
设计模式都有哪些?
一、创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 二、结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 三、行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模...
C++ 设计模式 —— 适配器模式
1.1 适配器模式的定义:适配器模式是一种将一个接口转换成客户希望的另一个接口的模式。它使得原本不兼容的接口能够合作。1.2 适配器模式适合的业务场景:适配器模式适用于需要在不修改原有代码的情况下,将一个类接口转换为另一个接口,使不兼容的接口能够协同工作。2. 适配器模式的原理 2.1 角色...
设计模式的三大类别
2、结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。3、行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。根据模式是主要用于类上还是主要用于对象上来分,这种方式可分...
什么是适配器设计模式
适配器模式:将一个接口转换为客户端的另一个接口,使得原本由于接口不相容的两个类别可以相互配合的一起工作。主要是起一个转换器的作用,目的就是复用原来的功能。又称为转换器模式、变压器模式、包装模式;包装模式即把已有的一些类包装起来,使之能有满足需要的接口。适配器的作用在生活中很常见,...
适配器模式属于什么模式
适配器模式属于结构型设计模式。适配器模式在软件设计中被广泛应用,它主要用于将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而无法协同工作的类能够在一起工作。这种模式常常用于对现有系统的改造或升级,尤其是当新系统与旧系统需要交互,但接口不一致时。适配器模式的核心思想是将一...
Go语言实现GoF设计模式:适配器模式
适配器模式与装饰者模式、代理模式在结构上相似,但各有侧重。适配器改变接口,不改变功能;装饰者和代理则增强功能而不改变接口。对于设计模式的应用,需要根据具体场景权衡其优缺点。文章配图可在相关资源中获取,如用Keynote绘制的手绘风格图。参考资源包括GoF设计模式的实践指南、《设计模式》一书、...
iOS中都有什么设计模式?各个设计模式的作用
1、 创建模式:工厂模式、单子模式、建造者模式、原型模式、工厂方法模式。2、 结构模式:外观模式、代理模式、适配器模式、组合模式、装饰模式、桥模式、共享模式。3、 行为模式:模板模式、纪念品模式、观察者模式、责任链模式、命令模式、声明模式、策略模式、中介模式、解释器模式、访问模式 说白了模式...