#大话设计模式之适配器模式#
现在有一个需求:为不懂英语的姚明设置一个翻译
球员父类(集合了球员必备的名字与方法等属性)
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();}
}
使用:接口不同的时候使用,维护旧代码的时候使用,解决不同数据库接口问题。
#大话设计模式之适配器模式#相关推荐
- 大话设计模式—适配器模式
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能.这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口 ...
- [大话设计模式C++版] 第17章 在NBA我需要翻译 —— 适配器模式
源码可以在这里找到 大话设计模式C++版 篮球翻译适配器 //Player.h 球员基类 #include <QString>class Player {protected:QString ...
- 设计模式之适配器模式(Adapter)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- 【Python】《大话设计模式》Python版代码实现
<大话设计模式>Python版代码实现 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼 ...
- python适配器模式角色_Python设计模式之适配器模式原理与用法详解
本文实例讲述了Python设计模式之适配器模式原理与用法.分享给大家供大家参考,具体如下: 适配器模式(Adapter Pattern):将一个类的接口转换成为客户希望的另外一个接口. 下面是一个适配 ...
- 【大话设计模式】设计模式系统学习大合集
转载请注明出处:http://blog.csdn.net/column/details/designpatternbylmb.html 为了方便各位网友学习以及方便自己复习之用,将设计模式的系列内容按 ...
- 大话设计模式—代理模式
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能.这种类型的设计模式属于结构型模式.我们创建具有现有对象的对象,以便向外界提供功能接口. 大话设计模式中程杰老师的给出的解释是代理模 ...
- 《大话设计模式》读书笔记-索引
<大话设计模式>读书笔记-第1章 简单工厂模式 <大话设计模式>读书笔记-第2章 策略模式 <大话设计模式>读书笔记-第3章 单一职责原则 <大话设计模式&g ...
- 《大话设计模式》读后感
第一次读<大话设计模式>,是在刚接触C#的时候.疲累于大部头的官方教材中时,无意间翻开了这本生动有趣的书,甚是眼前一亮.由于当时C#基础薄弱,只是把它当小说来看,如饥似渴,饶有滋味,一口气 ...
- 大话设计模式读书笔记
主题 概要 设计模式 大话设计模式读书笔记 编辑 时间 新建 20170423 序号 参考资料 1 大话设计模式 重新看了一遍设计模式,除了一些已经特别熟悉的模式,都自己敲了一遍代码,有些豁然开朗的感 ...
最新文章
- 【TX2】安装NVIDIA SDK Manager(JetPack 4.6)后,下载kernel和u-boot源码
- 对于访问IIS元数据库失败的解决方案
- [转载] zookeeper 分布式锁服务
- CentOS7安装VMware Tools
- esp32树莓派_用 ESP32 制造炫彩 LED 球
- 配置httpd虚拟主机
- Eclipse Java类编辑器里出现乱码的解决方案
- 46-单元测试(1)
- jquery交换数组元素位置_跟我一起学jQuery——第一集
- java查看日志命令_[Java教程]【Linux】linux查看日志文件内容命令tail、cat、tac、head、echo...
- mysql可重复读实验_Mysql可重复读测试
- html菜单栏用户点击完自动收缩,几个不错的自动收缩菜单导航效果
- 深度学习2.0-36.循环神经网络RNN-时间序列表示方法
- linux查看硬件以及系统信息
- 百度文库免费复制文字_如何复制百度文库上的内容——解答!
- 如何修改游戏服务器数据包,游戏数据包的定义
- 网络工程师秋招面试总结
- 饥荒联机版服务器搭建_饥荒联机版(Don't Starve Together)专用服务器搭建教程
- android bmob获取密码,Bmob后端云初体验
- 华为鸿蒙系统推升级应用名称,华为哪些手机可以用鸿蒙系统?华为手机鸿蒙系统升级名单公布...
热门文章
- CF 339C Xenia and Weights 背包
- SQLServer 数据库无法重命名
- windows多显示器任务栏设置:拖动窗口后任务栏显示在对应的显示器上
- [NIPS 2018] Delta Encoder: An Effective Sample Synthesis Method for Few Shot Object Recognition
- 蓝桥杯c语言之小蓝制作门牌
- 1080p和1080i
- 【团队协作】使用slack上的To-do实现事项待办和任务处理
- 语义分割论文:Fully Convolutional Networks for Semantic Segmentation (CVPR2015)
- 出色的社区网站_《最后的我们》中出色的制作系统
- 千人千面、个性化推荐:解读数据赋能商家背后的AI技术