适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作.
适配器模式类型:
- 对象适配器模式(适配器容纳一个它包裹的类的实例)
- 类适配器模式(适配器继承自已实现的类)
适配器模式主要内容:
- 类适配器(在接口中定义了他期望的行为时,我们就可以应用适配器模式,提供一个实现该接口的类,并且扩展已有的类,通过创建子类来实现适配)
- 对象适配器(通过组合除了满足“用户期待接口”还降低了代码间的不良耦合)
- 缺省适配器模式(由一个抽象类实现的,并且在抽象类中要实现目标接口中所规定的所有方法,但很多方法的实现都是“平庸”的实现,也就是说,这些方法都是空方法。而具体的子类都要继承此抽象类。)
适配器适应情况:
- 接口中规定了所有要实现的方法
- 但一个要继承此接口的具体类,只用到了其中的几个方法,而其它的方法都是没有用的
牵涉到java基础知识:抽象类
先看看抽象类 例如:在POS系统常常会出现采购订单和销售订单。这两种类型的订单可以抽象出订单或在考虑工人,老师,学生等共性时候可以抽象出人
public abstract class Person
{
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age =age;
}
public abstract String getSay();
public void say(){
System.out.println(this.getSay());
}
}
class Worker extends Person
{
private float money;
public Worker(String name, int age, float money){
super(name,age);
this.money = money;
}
public void getSay(){
}
}
class Student extends Person
{
private float score;
public Student(String name, int age, float score){
super(name, age);
this.score = score;
}
public void getSay(){
}
}
public static void Main(Strings[] args){
Person p = new Worker("张三",25,5000);
p.getSay();
Person p = new Student("李四",18,85);
p.getSay();
}
回顾抽象类的性质:
引用
1.类和方法都要被关键字abstract去修饰
2.抽象的方法不用去实现而只要声明一下就可以了
3.抽象类不可以去实例化,也就是不能去new
4.一个类中如果含有抽象方法,那么这个类就必须被声明为抽象类,继承它的子类必须去覆写这个抽象方法才可以被实例化
下面开始实施一个简单的类适配器:
interface Eat
{
public void eatBread();
public void eatApplea();
public void eatBanana();
}
abstract class PersonEat implements Eat
{
public void eatBread(){
}
public void eatApplea(){
}
public void eatBanana(){
}
}
class Person extends PersonEat
{
public void eatBread(){
System.out.println("Eat Bread");
}
public void eatApple(){
System.out.println("Eat APple");
}
}
public static void main(String[] args){
Person p = new Person();
p.eatBread();
p.eatApple();
}
这种类适配器不适合在实际运用 因为它采用类似“多继承”的实现方式,带来了不良的高耦合,最好用对象适配器 因为它采用“对象组合”的方式,更符合松耦合
下面看个简单的对象适配器实例
public interface Brower
{
public void request();
}
public class IEBrowerAdaptee
{
public void sprcificRequest(){};
}
public class BrowerAdapter implements Brower
{
public BrowerAdapter(IEAdaptee adaptee){
super();
this.adaptee = adaptee;
}
public void request(){
adaptee.specificRequest();
}
private IEAdaptee adaptee;
}
分享到:
相关推荐
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,允许不兼容的接口之间进行通信。在这个Java实现中,我们将深入探讨适配器模式的两大类型:类适配器模式和对象适配器模式,并通过具体的代码示例和...
在软件设计领域,设计模式是一种经过时间和实践验证的解决方案,用于解决常见的...这个"设计模式之适配器模式与外观模式demo"资源为学习和实践这两种模式提供了宝贵的实例,对于提升编程技能和设计思维具有积极意义。
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,允许不同接口的类之间进行通信。适配器模式的核心思想是将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而无法一起工作的类...
适配器模式是一种结构型设计模式,主要解决的是不同接口之间不兼容的问题,使得原本由于接口不匹配而无法协作的类能够协同工作。适配器模式分为类适配器和对象适配器两种形式。 在类适配器模式中,适配器类直接继承...
同时,“[浪曦原创]JAVA设计模式 第1讲 抽象类与适配器模式(jzkangta).exe”应该是一个视频教程,可以帮助你更直观地学习。PPT文件“抽象类与适配器模式.ppt”则可能是教学幻灯片,列出了关键点和示例。最后,“demo...
标题“设计模式之适配器Adapter”暗示我们将深入探讨适配器模式的核心概念和应用场景。适配器模式通常应用于以下场景: 1. 当系统中存在一个已经存在的类,其接口不符合新需求时,可以使用适配器模式来调整接口,使...
适配器模式(Adapter)是软件工程中一种常用的设计模式,它允许两个不兼容的接口之间进行通信。在C++编程中,适配器模式能够帮助我们复用现有的类,或者将第三方库的接口与我们的系统接口进行对接,从而提高代码的可...
适配器模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在解决系统间的兼容性和接口不匹配问题时。适配器模式的核心思想是将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而无法...
在软件工程领域,设计模式是解决常见问题...在给定的压缩包文件`designmodel`中,可能包含了实现这两种适配器模式的示例代码,通过学习这些代码,我们可以更好地理解和运用适配器模式,提高代码的可复用性和可维护性。
通过阅读和分析这些代码,我们可以深入理解适配器模式在实际编程中的运用,学习如何在C语言环境中实现这种设计模式。 适配器模式的关键优势在于: - **灵活性**:适配器模式允许我们轻松地添加新的适配器,以适应...
### 设计模式实验报告——适配器模式 #### 一、引言 设计模式是一种在特定情境下解决软件设计问题的通用解决方案。它为解决常见问题提供了一种可复用的设计思路,帮助开发者构建出更加灵活、易于维护的系统。在...
适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在软件工程中,我们常常遇到这样的情况:一个系统需要使用一个已经存在的类库或组件,但其接口与我们的系统不匹配,此时适配器模式就发挥了作用...
适配器模式是一种软件设计模式,它允许两个不兼容的接口之间进行通信。在iOS开发中,这种模式尤其有用,因为我们需要将不同的组件或库集成到一个统一的系统中,而这些组件或库可能有着各自独立的设计和接口。适配器...
《设计模式》这本书由GoF(Gang of Four)编写,是设计模式领域的经典之作,刘伟教授的版本则可能加入了更多适合中国开发者阅读的实例和解释。适配器模式在书中被详细阐述,包括它的结构、动机以及如何在实际编程中...
这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入...
### 设计模式之适配器模式详解 #### 一、适配器模式概述 适配器模式(Adapter Pattern)是一种常用的软件设计模式,它属于结构型模式的一种。该模式的主要目的是解决不同接口之间的兼容性问题,使原本由于接口不...
学习设计模式并不意味着要在所有地方都硬套模式,而是要理解其背后的意图,灵活地在适当的地方应用,以解决实际问题。 设计模式之美在于它们是软件设计的通用语言,无论你使用哪种编程语言,都能通过这些模式与他人...
主要介绍了JAVA设计模式之适配器模式的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解
Java 经典设计模式讲解以及...12 适配器模式 设计模式综合运用 1 门面+模版方法+责任链+策略 2 门面+模版方法+责任链+策略+工厂方法 3 动态代理+Spring AOP 4 责任链模式进阶 Spring Framework设计模式 Spring 设计模式