设计模式--适配器模式

简介: first:推荐看Terry的设计模式的blog,真的很精彩,通俗易懂。 second: 首先拿出当时我老师教我设计模式时给的资料里面的一段话: 比较形象的,通俗讲解设计模式的一段话: “ 在朋友聚会上碰到了一个美女Sarah,从香港来的,可我不会说粤语,她不会说普通话,只好求助于我的朋友kent了,他作为我和Sarah之间的Adapter,让我和Sarah可以相互交谈了(也不知道他会不会耍我) 适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。

first:推荐看Terry的设计模式的blog,真的很精彩,通俗易懂。

second: 首先拿出当时我老师教我设计模式时给的资料里面的一段话:

比较形象的,通俗讲解设计模式的一段话: “ 在朋友聚会上碰到了一个美女Sarah,从香港来的,可我不会说粤语,她不会说普通话,只好求助于我的朋友kent了,他作为我和Sarah之间的Adapter,让我和Sarah可以相互交谈了(也不知道他会不会耍我) 适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。

 首先定义接口,抽象要设配的方法:

 

package com.soyoung.adapter;

public interface Show {

    public abstract String showBoy();
    
    
    public abstract String showGirl();
    
}
package com.soyoungboy.adapter;

public class Human{
    
    private String string;
    
    public Human(String string)
    {
        this.string=string;
    }
    
    
    public String showWithBoy(){
        return string+"is boy";
    }
    
    public String ShowWidthGirl(){
        return string+ "is girl";
    }
}
package com.soyoungboy.adapter;

public class Humanshow extends Human implements Show {
    
    public Humanshow(String string) {
        super(string);
        // TODO Auto-generated constructor stub
    }
    
    @Override
    public String showBoy() {
        return showWithBoy();
    }
    
    @Override
    public String showGirl() {
        return ShowWidthGirl();
    }
    
    
    
}
package com.soyoungboy.adapter;

public class Main {
    
    public static void main(String[] args) {
        Human human = new Humanshow("lily ");
        String boy = human.showWithBoy();
        String girl =  human.ShowWidthGirl();
        System.out.println(boy);
        System.out.println(girl);
    }
    
}

 

结果为:

lily is boy
lily is girl

适配器模式分为两种模式

类适配器模式对象适配器模式

对象适配器模式:把被适配的类的api转换为目标类的api,与类的适配器模式不同,对象适配器模式不是使用继承链接到需要适配的类,而是使用代理关系连接到需要适配的类,直接将要适配的对象传递到adapter类里面,通过组合的形式实现接口兼容,而且也避免类适配器模式因为继承出现的奇怪的方法,更加灵活实用。android里面的adapter就是对象适配器模式。通过将传递进来的数据再getview里面进行处理,返回统一的view对象,会发生变化的部分比如数据独立交给用户处理,通过观察者模式解耦数据和UI,View和数据之间没有依赖,一个数据可应对多套布局。

 举个对象适配器的例子:

1 public class Source {
2 public void method1() {
3 System.out.println("this is original method!");
4 }
5 }
1 public interface Targetable {
2 /* 与原类中的方法相同 */
3 public void method1();
4 /* 新类的方法 */
5 public void method2();
6 }
public class Wrapper implements Targetable {
private Source source;
public Wrapper(Source source) {
super();
this.source = source;
}
@Override
public void method2() {
System.out.println("this is the targetable method!");
}
@Override
public void method1() {
source.method1();
}
}
--------------------------------------------------------------
public class AdapterTest {
public static void main(String[] args) {
Source source = new Source();
Targetable target = new Wrapper(source);
target.method1();
target.method2();
}
}

 

相关文章
|
6月前
|
设计模式 Java API
重构旧代码的秘诀:用设计模式 - 适配器模式(Adapter)给Java项目带来新生
【4月更文挑战第7天】适配器模式是解决接口不兼容问题的结构型设计模式,通过引入适配器类实现目标接口并持有不兼容类引用,实现旧代码与新接口的协作。适用于处理兼容性问题、整合遗留代码和集成第三方库。应用时,识别不兼容接口,创建适配器类转换方法调用,然后替换原有引用。注意保持适配器简单、使用组合和考虑扩展性。过度使用可能导致系统复杂和维护成本增加,应谨慎使用。
100 4
|
6月前
|
设计模式 Java 中间件
23种设计模式,适配器模式的概念优缺点以及JAVA代码举例
【4月更文挑战第6天】适配器模式(Adapter Pattern)是一种结构型设计模式,它的主要目标是让原本由于接口不匹配而不能一起工作的类可以一起工作。适配器模式主要有两种形式:类适配器和对象适配器。类适配器模式通过继承来实现适配,而对象适配器模式则通过组合来实现
101 4
|
2月前
|
设计模式 Java 程序员
Java设计模式-适配器模式(8)
Java设计模式-适配器模式(8)
|
1月前
|
设计模式 Java
Java设计模式之适配器模式
这篇文章详细讲解了Java设计模式中的适配器模式,包括其应用场景、实现方式及代码示例。
40 0
|
6月前
|
设计模式 Java
【设计模式】JAVA Design Patterns——Adapter(适配器模式)
【设计模式】JAVA Design Patterns——Adapter(适配器模式)
|
2月前
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
3月前
|
设计模式 XML 存储
【六】设计模式~~~结构型模式~~~适配器模式(Java)
文章详细介绍了适配器模式(Adapter Pattern),这是一种结构型设计模式,用于将一个类的接口转换成客户期望的另一个接口,使原本不兼容的接口能够一起工作,提高了类的复用性和系统的灵活性。通过对象适配器和类适配器两种实现方式,展示了适配器模式的代码应用,并讨论了其优点、缺点以及适用场景。
|
5月前
|
设计模式
适配器模式-大话设计模式
适配器模式-大话设计模式
|
4月前
|
设计模式 Go 数据处理
iLogtail设计模式问题之在iLogtail中,为何需要使用适配器模式
iLogtail设计模式问题之在iLogtail中,为何需要使用适配器模式
|
4月前
|
设计模式 JavaScript 前端开发
js设计模式【详解】—— 适配器模式
js设计模式【详解】—— 适配器模式
30 0