Jtti广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >java适配器模式之万物拟人化
  • 112
分享到

java适配器模式之万物拟人化

java适配器模式java设计模式 2019-04-29 23:04:11 112人浏览 猪猪侠
摘要

目录什么是适配器模式类的适配器模式源(Adapee)角色目标(Target)角色适配器(Adaper)角色增加源(Adapee)角色的后果对象的适配器模式增加一个动物接口让源(Adapee)角色的猫猫和狗狗实现动物接口万物拟人适配器(Ada

目录
  • 什么是适配器模式
  • 类的适配器模式
    • 源(Adapee)角色
    • 目标(Target)角色
    • 适配器(Adaper)角色
    • 增加源(Adapee)角色的后果
  • 对象的适配器模式
    • 增加一个动物接口
    • 让源(Adapee)角色的猫猫和狗狗实现动物接口
    • 万物拟人适配器(Adaper)角色
  • 缺省适配模式
    • 目标(Target)角色增加行为声明
    • 适配器(Adaper)角色必须跟着增加行为实现
    • 缺省适配器

什么是适配器模式

以下是百科的解释。

在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。

共有两类适配器模式:

  • 类适配器模式:

这种适配器模式下,适配器继承自已实现的类(一般多重继承)。

  • 对象适配器模式:

在这种适配器模式中,适配器容纳一个它包裹的类的实例。在这种情况下,适配器调用被包裹对象。

设计模式编程语言无关,但是二当家的依然用Java语言去实战举例。


类的适配器模式

img

  • 源(Adapee)角色:现在需要适配的接口。
  • 目标(Target)角色:这就是所期待得到的接口。注意:由于这里讨论的是类适配器模式,因此目标不可以是类。
  • 适配器(Adaper)角色:适配器类是本模式的核心。适配器把源接口转换成目标接口。显然,这一角色不可以是接口,而必须是具体类。

源(Adapee)角色

二当家喜欢狗狗,所以养了一只狗狗,他有时候会发出叫声。


package com.secondGod.adapter;


public class Dog {
    
    public void makeSound() {
        System.out.println("狗狗:汪汪汪。。。。。。");
    }
}

目标(Target)角色

我们会和朋友聊天说话。


package com.secondgod.adapter;


public interface IFriend {
    
    void speak();
}

适配器(Adaper)角色

过了一段时间,二当家把狗狗当成了朋友,觉得它不是在叫,而是在说话。


package com.secondgod.adapter;


public class DogFriend extends Dog implements IFriend {
    
    @Override
    public void speak() {
        super.makeSound();
    }
}

我们测试一下和狗狗朋友的说话。


package com.secondgod.adapter;


public class Person {
    
    public void speakTo(IFriend friend) {
        System.out.println("人:朋友,你干什么呢?");
        friend.speak();
    }

    public static void main(String[] args) {
        Person  person = new Person();
        IFriend friend = new DogFriend();
        person.speakTo(friend);
    }
}

在这里插入图片描述

二当家的说一句,狗狗叫一声,我们真的像是在聊天。


增加源(Adapee)角色的后果

有一天,二当家的又养了一只猫猫。


package com.secondgod.adapter;


public class Cat {
    
    public void makeSound() {
        System.out.println("猫猫:喵喵喵。。。。。。");
    }
}

过了几天,二当家的和猫猫也成了朋友。这时候只好再多增加一个猫朋友类。


package com.secondgod.adapter;


public class CatFriend extends Cat implements IFriend {
    
    @Override
    public void speak() {
        super.makeSound();
    }
}

二当家的和狗朋友,猫朋友聊天。


package com.secondgod.adapter;


public class Person {
    
    public void speakTo(IFriend friend) {
        System.out.println("人:朋友,你干什么呢?");
        friend.speak();
    }

    public static void main(String[] args) {
        Person  person = new Person();
        IFriend dogFriend = new DogFriend();
        IFriend catFriend = new CatFriend();
        person.speakTo(dogFriend);
        person.speakTo(catFriend);
    }
}

在这里插入图片描述

以后要是二当家的再有其他动物朋友,就需要再去增加适配器类。有没有办法通用一点呢?


对象的适配器模式

二当家的希望可以有一个和各种动物做朋友的办法,而不是每次有了新的动物朋友都需要增加一个适配器。

在这里插入图片描述


增加一个动物接口


package com.secondgod.adapter;


public interface IAnimal {

    
    void makeSound();
}

让源(Adapee)角色的猫猫和狗狗实现动物接口


package com.secondgod.adapter;


public class Dog implements IAnimal {
    
    public void makeSound() {
        System.out.println("狗狗:汪汪汪。。。。。。");
    }
}

package com.secondgod.adapter;


public class Cat implements IAnimal {
    
    public void makeSound() {
        System.out.println("猫猫:喵喵喵。。。。。。");
    }
}

万物拟人适配器(Adaper)角色


package com.secondgod.adapter;


public class AnimalFriendAdaper implements IFriend {
    
    private IAnimal animal;

    public AnimalFriendAdaper(IAnimal animal) {
        this.animal = animal;
    }

    @Override
    public void speak() {
        animal.makeSound();
    }
}

测试我们的万物拟人适配器。


package com.secondgod.adapter;


public class Person {
    
    public void speakTo(IFriend friend) {
        System.out.println("人:朋友,你干什么呢?");
        friend.speak();
    }

    public static void main(String[] args) {
        // 一个人
        Person  person = new Person();
        // 一只狗
        IAnimal dog = new Dog();
        // 一只猫
        IAnimal cat = new Cat();
        // 万物拟人
        person.speakTo(new AnimalFriendAdaper(dog));
        person.speakTo(new AnimalFriendAdaper(cat));
    }
}

在这里插入图片描述

太好了。和动物做朋友轻松多了。因为有了万物拟人的适配器。


缺省适配模式

在这里插入图片描述


目标(Target)角色增加行为声明

有一天,朋友的标准变了。必须得会码砖才行。


package com.secondgod.adapter;


public interface IFriend {
    
    void speak();

    
    void coding();
}

适配器(Adaper)角色必须跟着增加行为实现

修改后的万物拟人适配器


package com.secondgod.adapter;


public class AnimalFriendAdaper implements IFriend {
    
    private IAnimal animal;

    public AnimalFriendAdaper(IAnimal animal) {
        this.animal = animal;
    }

    @Override
    public void speak() {
        animal.makeSound();
    }

    @Override
    public void coding() {
        System.out.println("动物:笑而不语摇摇头。。。。。。");
    }
}

缺省适配器

二当家的想和动物做朋友,但是不想去考虑他们如何码砖,以后二当家的要是和植物做朋友,还得为植物朋友也实现码砖行为,烦哦。所以我们来个默认空实现。


package com.secondgod.adapter;


public abstract class FriendAdaper implements IFriend {
    @Override
    public void speak() {

    }

    @Override
    public void coding() {

    }
}

package com.secondgod.adapter;


public class AnimalFriendAdaper extends FriendAdaper {
    
    private IAnimal animal;

    public AnimalFriendAdaper(IAnimal animal) {
        this.animal = animal;
    }

    @Override
    public void speak() {
        animal.makeSound();
    }
}

由于多了一个默认实现,我们就不需要为万物适配器实现码砖行为了。

适配器模式的用意是要改变源的接口,以便于目标接口相容。缺省适配的用意稍有不同,它是为了方便建立一个不平庸的适配器类而提供的一种平庸实现。

在任何时候,如果不准备实现一个接口的所有方法时,就可以使用“缺省适配模式”制造一个抽象类,给出所有方法的平庸的具体实现。这样,从这个抽象类再继承下去的子类就不必实现所有的方法了。

到此这篇关于java适配器模式之万物拟人化的文章就介绍到这了,更多相关java适配器模式内容请搜索编程界以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程界!

--结束END--

本文标题: java适配器模式之万物拟人化

本文链接: https://www.lsjlt.com/news/75.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java设计模式之适配器模式
    本文通过老王使用纸质书籍阅读小王使用电子书籍的故事,详细说明设计模式中的结构型设计模式之适配器模式,分别对对象适配器和类适配器代码实现,最后为了加深理解,会列举适配器设计模式在JDK...
    252
    2023-09-27
    Java 设计模式 适配器模式
  • 详解Java实践之适配器模式
    目录一、前言二、适配器模式介绍三、案例场景模拟3.1、场景模拟工程3.2、场景简述3.2.1、注册开户MQ3.2.2、内部订单MQ3.2.3、第三方订单MQ3.2.4、查询用户内部下...
    682
    2023-09-27
    Java 设计模式 Java 适配器模式
  • Java 设计模式之适配器模式详解
    目录定义结构图使用场景代码实现Java代码实现Python代码实现定义 适配器将一个类的接口,转换成客户期望另一个接口。适配器让原本不兼容的类可以合作无间 结构图 如图所示,两脚插...
    448
    2023-09-27
    Java 设计模式 Java 适配器模式
  • java设计模式之浅谈适配器模式
    目录一、结构型模式二、适配器模式三、什么是适配器模式?四、角色分析五、对象适配器有哪些优点六、类适配器缺点七、使用场景一、结构型模式 结构型模式有什么好处? 从程序的结构上实现松耦合...
    719
    2023-09-27
    java适配器模式 java设计模式
  • java 设计模式之适配器模式的详解
    java 设计模式之适配器模式的详解前言:      适配器模式(Adapter Pattern)又叫做变压器模式,也叫做包装模式。包装模式还包括装饰模式。  ...
    531
    2023-09-27
    java 适配器 ava
  • Java适配器模式示例分析
    本篇内容主要讲解“Java适配器模式示例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java适配器模式示例分析”吧!定义适配器模式,即将某个类的接口转换成客户端期望的另一个接口的表示,主要...
    455
    2023-09-27
  • Java适配器模式怎么掌握
    今天小编给大家分享一下Java适配器模式怎么掌握的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、什么是适配器模式?其实适配...
    404
    2023-09-27
  • 深入理解Java设计模式之适配器模式
    目录一、什么是适配器模式二、适配器模式的结构三、适配器模式的使用场景四、适配器模式的优缺点五、适配器模式的实现1.类适配器模式2.对象适配器模式六、适配器模式的.NET应用总结一、什...
    603
    2023-09-27
    Java设计模式 Java适配器模式
  • Java设计模式之适配器模式的示例详解
    目录定义分类案例需求方案一:类适配器方案二:对象适配器方案三:接口适配器对比分析方案一:类适配器方案二:对象适配器方案三:接口适配器总结 定义 适配器模式,即将某个类的接口转换成客户...
    372
    2023-09-27
    Java 设计模式 适配器模式 Java 适配器模式
  • Java设计模式解析之适配器模式怎么实现
    本篇内容介绍了“Java设计模式解析之适配器模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、什么是适配器模式:适配器模式主要用...
    389
    2023-09-27
  • Java设计模式--适配器模式详解
    目录定义结构示例扩展总结定义 适配器模式用于解决接口间的兼容问题。 当我们需要使用某个类提供的接口,但是这个接口与现在的系统需求不符,由于该接口是由第三方提供的,或者是已经在生产上跑...
    788
    2023-09-27
    Java设计模式 Java适配器模式
  • Android设计模式之适配器(Adapter)模式
    本文实例为大家分享了Android适配器模式源码,供大家参考,具体内容如下 1. 模式介绍 1.1模式的定义:   适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而...
    721
    2023-09-27
    adapter Android
  • JavaScript设计模式学习之适配器模式
    目录概述代码实现总结概述 适配器模式是设计模式行为型模式中的一种模式; 定义: 适配器用来解决两个已有接口之间不匹配的问题,它并不需要考虑接口是如何实现,也不用考虑将来该如何修改;适...
    346
    2023-09-27
    Javascript 设计模式 Javascript 适配器模式
  • java适配器模式的示例分析
    这篇文章主要为大家展示了“java适配器模式的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java适配器模式的示例分析”这篇文章吧。定义:将一个类的接口转换成客户希望的另外一个接口。适...
    676
    2023-09-27
    java
  • java如何实现适配器模式
    这篇文章将为大家详细讲解有关java如何实现适配器模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。适配器(Adapter)模式:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不...
    718
    2023-09-27
    java
  • Java中怎么实现适配器模式
    本篇文章为大家展示了Java中怎么实现适配器模式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。类适配模式在地球时代,所有坐骑都是只能跑,不能飞的,而现在很多坐骑在地球都可以飞了。假设,地球时代的坐骑...
    196
    2023-09-27
  • 深入Java万物之母Object类详情
    目录前言一、接口补充知识二、Object类1.重点一2.重点二3.重点三4.重点四总结前言 在Java中,有一个很神奇的类,所有的类见了它都得恭敬的叫一声“父亲&rdqu...
    935
    2023-09-27
    Java Object类 Java Object
  • Java结构型设计模式之适配器模式详解
    目录适配器模式分类应用场景优缺点主要角色类适配器创建目标角色(Target)创建源角色(Adaptee)创建适配器(Adapter)客户端调用对象适配器创建目标角色(Target)创...
    568
    2023-09-27
    Java适配器模式 Java设计模式 Java设计模式适配器模式
  • Java通俗易懂系列设计模式之适配器模式
    目录介绍结构类图对象适配器类适配器实例类适配器实现对象适配器实现测试demo类适用场景总结今天看了部特工电影,里面有个桥段,主角在直升机上和反派生死搏斗,而飞机则是无人驾驶的状态,有...
    231
    2023-09-27
    Java 设计模式 Java 适配器模式
  • Java设计模式中的适配器模式
    目录基本介绍工作原理类适配器模式对象适配器模式接口适配器模式适配器模式的注意事项和细节基本介绍 适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口...
    497
    2023-09-27
    Java设计模式 Java适配器模式
热门问答
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作