现在有一个需求:为不懂英语的姚明设置一个翻译

球员父类(集合了球员必备的名字与方法等属性)

package AdapterPattern;public abstract class Player {String name;public Player(String name) {// TODO Auto-generated constructor stubthis.name = name;}public abstract void attack();public abstract void defense();
}

球员子类(实例化前中后三类球员)

package AdapterPattern;public class PlayerSon {}
class Forwards extends Player{public Forwards(String name) {super(name);// TODO Auto-generated constructor stub}@Overridepublic void attack() {// TODO Auto-generated method stubSystem.out.println("前锋"+name+"进攻");}@Overridepublic void defense() {// TODO Auto-generated method stubSystem.out.println("前锋"+name+"防守");}}
class Center extends Player{public Center(String name) {super(name);// TODO Auto-generated constructor stub}@Overridepublic void attack() {// TODO Auto-generated method stubSystem.out.println("中锋"+name+"进攻");}@Overridepublic void defense() {// TODO Auto-generated method stubSystem.out.println("中锋"+name+"防守");}}
class Guards extends Player{public Guards(String name) {super(name);// TODO Auto-generated constructor stub}@Overridepublic void attack() {// TODO Auto-generated method stubSystem.out.println("后卫"+name+"进攻");}@Overridepublic void defense() {// TODO Auto-generated method stubSystem.out.println("后卫"+name+"防守");}}

外籍球员类(姚明球员实例)

package AdapterPattern;public class ForeignCenter {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public void 进攻(){System.out.println("外籍中锋"+name+"进攻");}public void 防守(){System.out.println("外籍中锋"+name+"防守");}
}

翻译者(间接调用姚明的方法,姚明本身不属于player父类,接口不同方法不同,但行为是一样的都是进攻防守)

package AdapterPattern;public class Translator extends Player {private ForeignCenter fc = new ForeignCenter();public Translator(String name) {super(name);fc.setName(name);// TODO Auto-generated constructor stub}@Overridepublic void attack() {// TODO Auto-generated method stubfc.进攻();}@Overridepublic void defense() {// TODO Auto-generated method stubfc.防守();}}

界面类(此类比较简单,主要就是一个间接调用球员的方法而已,理解了翻译者和外籍球员两个类就好了)

package AdapterPattern;public class Main {public void printFrame(){Player p1 = new Forwards("李白");p1.attack();Player p2 = new Guards("娜可露露");p2.attack();Player p3 = new Translator("姚明");p3.attack();}public static void main(String[] args) {Main main = new Main();main.printFrame();}
}

使用:接口不同的时候使用,维护旧代码的时候使用,解决不同数据库接口问题。

#大话设计模式之适配器模式#相关推荐

  1. 大话设计模式—适配器模式

    适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能.这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口 ...

  2. [大话设计模式C++版] 第17章 在NBA我需要翻译 —— 适配器模式

    源码可以在这里找到 大话设计模式C++版 篮球翻译适配器 //Player.h 球员基类 #include <QString>class Player {protected:QString ...

  3. 设计模式之适配器模式(Adapter)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  4. 【Python】《大话设计模式》Python版代码实现

    <大话设计模式>Python版代码实现 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼 ...

  5. python适配器模式角色_Python设计模式之适配器模式原理与用法详解

    本文实例讲述了Python设计模式之适配器模式原理与用法.分享给大家供大家参考,具体如下: 适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口. 下面是一个适配 ...

  6. 【大话设计模式】设计模式系统学习大合集

    转载请注明出处:http://blog.csdn.net/column/details/designpatternbylmb.html 为了方便各位网友学习以及方便自己复习之用,将设计模式的系列内容按 ...

  7. 大话设计模式—代理模式

    在代理模式(Proxy Pattern)中,一个类代表另一个类的功能.这种类型的设计模式属于结构型模式.我们创建具有现有对象的对象,以便向外界提供功能接口. 大话设计模式中程杰老师的给出的解释是代理模 ...

  8. 《大话设计模式》读书笔记-索引

    <大话设计模式>读书笔记-第1章 简单工厂模式 <大话设计模式>读书笔记-第2章 策略模式 <大话设计模式>读书笔记-第3章 单一职责原则 <大话设计模式&g ...

  9. 《大话设计模式》读后感

    第一次读<大话设计模式>,是在刚接触C#的时候.疲累于大部头的官方教材中时,无意间翻开了这本生动有趣的书,甚是眼前一亮.由于当时C#基础薄弱,只是把它当小说来看,如饥似渴,饶有滋味,一口气 ...

  10. 大话设计模式读书笔记

    主题 概要 设计模式 大话设计模式读书笔记 编辑 时间 新建 20170423 序号 参考资料 1 大话设计模式 重新看了一遍设计模式,除了一些已经特别熟悉的模式,都自己敲了一遍代码,有些豁然开朗的感 ...

最新文章

  1. 【TX2】安装NVIDIA SDK Manager(JetPack 4.6)后,下载kernel和u-boot源码
  2. 对于访问IIS元数据库失败的解决方案
  3. [转载] zookeeper 分布式锁服务
  4. CentOS7安装VMware Tools
  5. esp32树莓派_用 ESP32 制造炫彩 LED 球
  6. 配置httpd虚拟主机
  7. Eclipse Java类编辑器里出现乱码的解决方案
  8. 46-单元测试(1)
  9. jquery交换数组元素位置_跟我一起学jQuery——第一集
  10. java查看日志命令_[Java教程]【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...
  11. mysql可重复读实验_Mysql可重复读测试
  12. html菜单栏用户点击完自动收缩,几个不错的自动收缩菜单导航效果
  13. 深度学习2.0-36.循环神经网络RNN-时间序列表示方法
  14. linux查看硬件以及系统信息
  15. 百度文库免费复制文字_如何复制百度文库上的内容——解答!
  16. 如何修改游戏服务器数据包,游戏数据包的定义
  17. 网络工程师秋招面试总结
  18. 饥荒联机版服务器搭建_饥荒联机版(Don't Starve Together)专用服务器搭建教程
  19. android bmob获取密码,Bmob后端云初体验
  20. 华为鸿蒙系统推升级应用名称,华为哪些手机可以用鸿蒙系统?华为手机鸿蒙系统升级名单公布...

热门文章

  1. CF 339C Xenia and Weights 背包
  2. SQLServer 数据库无法重命名
  3. windows多显示器任务栏设置:拖动窗口后任务栏显示在对应的显示器上
  4. [NIPS 2018] Delta Encoder: An Effective Sample Synthesis Method for Few Shot Object Recognition
  5. 蓝桥杯c语言之小蓝制作门牌
  6. 1080p和1080i
  7. 【团队协作】使用slack上的To-do实现事项待办和任务处理
  8. 语义分割论文:Fully Convolutional Networks for Semantic Segmentation (CVPR2015)
  9. 出色的社区网站_《最后的我们》中出色的制作系统
  10. 千人千面、个性化推荐:解读数据赋能商家背后的AI技术