Java设计模式之适配器模式和外观模式

简介:

适配器模式

所谓适配器模式,将一个类的接口,转换为客户所期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
适配器主要组成包括
目标接口 :客户端所希望得到的接口
适配器:这个主要就是将被适配器转换为目标接口,一般要实现目标接口,且包含被配饰器成员
被适配器:也就是用来改造的,提供给适配器来转换的,通常要将该被适配器绑定传入到适配器中,让适配器得以转换。
一般这种模式就是在不修改现有代码的情况下,将一个接口转换为另一个接口。它主要包含两种方式:
对象适配器:
这种就是在适配器中利用了组合来处理,将被适配器作为适配器的一个成员属性,而且适配器则就实现或者继承客户所需要的目标接口
代码实例:
假如有一个小狗和小猫的两个接口,现在客户需要小猫,可是只有小狗接口,则就可以利用适配器来转换。
这里只写出适配器代码:
package test;
public class AnimalAdapter  implements Cat{
private Dog dog;//被适配器
public AnimalAdapter(Dog dog)
{
this.dog=dog;
}

public void mimi() {
dog.wow();
}
public void run() {
dog.run();
}

public void sleep() {
dog.sleep();
}
}

外观模式
所谓外观模式,就是提供一个统一接口,用来访问子系统中的一群接口。它定义了一个高层接口,让子系统更容易使用。
外观模式并没有封装了子系统的类,外观只是提供了更简化的接口 ,它里面仍然包含着子系统中各个接口的对象,并且利用组合将子系统的所有接口来包含起来 。它不仅提供了一个简化接口,而且依然将系统完整的功能暴露出来。
代码实例
假设你要回家,回家进入屋里有各种各样的操作,此时就可以将这一系列操作看着一个子系统。可以简化该所有操作。
外观模式
package test;

import com.whut.command.Light;

public class Facede {
//等各种子系统的操作
private Light light;
private Door door;
private Window window;

public void goHome()
{
light.on();
door.open();
window.open();
}

}
适配器模式将一个或者多个类接口变成客户所期望的接口,并不是转换一个接口。
外观模式也可以只针对一个拥有复杂接口的类提供简化的接口。
适配器模式设计的意图主要就是让现有接口改变成符合顾客所期望的接口
外观模式的意图就是将一个复杂的子系统的所有接口简化,以提供一个便利方便的接口来给客户
设计模式原则:
最少知识原则,减少对象之间的交互,只留下几个“密友”。
要想遵循这个原则一般我们应该只调用属于以下范围的方法:
1 该对象的本身
2 被当做方法的参数而传递进来的对象
3 此方法所创建或实例化的任何对象
4 对象的任何组件,即该对象内部的所有成员变量或者方法
不要调用当某对象是调用其他方法后返回的结果。
两个模式总结:
1)当需要使用一个现有的类但是其接口并不符合你的需要时,可以用适配器模式
2)当需要简化并且统一一个很大的接口或者一群复杂的接口时候
3)适配器改变接口以使其符合客户的期望
4)外观将客户从一个复杂的子系统中解耦

5)适配器将一个对象包装起来以改变其接口。

装饰者将一个对象包装起来用来增加新的行为和责任。外观将一群对象包装起来以简化其接口。



本文转自 zhao_xiao_long 51CTO博客,原文链接:http://blog.51cto.com/computerdragon/1165985

相关文章
|
12天前
|
设计模式 Java 开发者
设计模式揭秘:Java世界的七大奇迹
【4月更文挑战第7天】探索Java设计模式:单例、工厂方法、抽象工厂、建造者、原型、适配器和观察者,助你构建健壮、灵活的软件系统。了解这些模式如何提升代码复用、可维护性,以及在特定场景下的应用,如资源管理、接口兼容和事件监听。掌握设计模式,但也需根据实际情况权衡,打造高效、优雅的软件解决方案。
|
13天前
|
设计模式 存储 Java
23种设计模式,享元模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享技术有效地支持大量细粒度对象的重用。这个模式在处理大量对象时非常有用,特别是当这些对象中的许多实例实际上可以共享相同的状态时,从而可以减少内存占用,提高程序效率
30 4
|
13天前
|
设计模式 Java 中间件
23种设计模式,适配器模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目标是让原本由于接口不匹配而不能一起工作的类可以一起工作。适配器模式主要有两种形式:类适配器和对象适配器。类适配器模式通过继承来实现适配,而对象适配器模式则通过组合来实现
30 4
|
17天前
|
设计模式 Java 数据库
Java设计模式精讲:让代码更优雅、更可维护
【4月更文挑战第2天】**设计模式是解决软件设计问题的成熟方案,分为创建型、结构型和行为型。Java中的单例模式确保类仅有一个实例,工厂方法模式让子类决定实例化哪个类。适配器模式则协调不兼容接口间的合作。观察者模式实现了一对多依赖,状态变化时自动通知相关对象。学习和适当应用设计模式能提升代码质量和可维护性,但需避免过度使用。设计模式的掌握源于实践与不断学习。**
Java设计模式精讲:让代码更优雅、更可维护
|
30天前
|
设计模式 存储 uml
C++ 设计模式实战:外观模式和访问者模式的结合使用,派生类访问基类的私有子系统
C++ 设计模式实战:外观模式和访问者模式的结合使用,派生类访问基类的私有子系统
27 1
|
21天前
|
设计模式 安全 Java
在Java中即指单例设计模式
在Java中即指单例设计模式
15 0
|
12天前
|
设计模式 监控 Java
设计模式 - 观察者模式(Observer):Java中的战术与策略
【4月更文挑战第7天】观察者模式是构建可维护、可扩展系统的关键,它在Java中通过`Observable`和`Observer`实现对象间一对多的依赖关系,常用于事件处理、数据绑定和同步。该模式支持事件驱动架构、数据同步和实时系统,但需注意避免循环依赖、控制通知粒度,并关注性能和内存泄漏问题。通过明确角色、使用抽象和管理观察者注册,可最大化其效果。
|
30天前
Servlet使用适配器模式进行增删改查案例(IEmpService.java)
Servlet使用适配器模式进行增删改查案例(IEmpService.java)
13 0
|
1天前
|
设计模式 算法 Java
Java中的设计模式及其应用
【4月更文挑战第18天】本文介绍了Java设计模式的重要性及分类,包括创建型、结构型和行为型模式。创建型模式如单例、工厂方法用于对象创建;结构型模式如适配器、组合关注对象组合;行为型模式如策略、观察者关注对象交互。文中还举例说明了单例模式在配置管理器中的应用,工厂方法在图形编辑器中的使用,以及策略模式在电商折扣计算中的实践。设计模式能提升代码可读性、可维护性和可扩展性,是Java开发者的必备知识。
|
4天前
|
设计模式 算法 Java
小谈设计模式(30)—Java设计模式总结
小谈设计模式(30)—Java设计模式总结