大话设计模式之适配器模式
2013-08-12 21:34
155 查看
适配器模式,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
简单地说,就是需要的东西就在面前,但却不能使用,而短时间又无法改造它,于是我们就想办法适配它。
系统的数据和行为都正确,但接口不符时,我们应该考虑适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
适配器模式包括类适配器模式(用于多继承)和对象适配器模式(主讲)
Adapter类持有Adaptee对象,request方法中调用Adaptee对象的方法
简单地说,就是需要的东西就在面前,但却不能使用,而短时间又无法改造它,于是我们就想办法适配它。
系统的数据和行为都正确,但接口不符时,我们应该考虑适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
适配器模式包括类适配器模式(用于多继承)和对象适配器模式(主讲)
Adapter类持有Adaptee对象,request方法中调用Adaptee对象的方法
package Adapter; public class MainClass { public static void main(String[] args) { // TODO Auto-generated method stub Player b = new Forwards("baDiEr"); b.attack(); Player m = new Guards("maiDi"); m.attack(); Player ym = new Translator("yaoMing"); ym.attack(); ym.defense(); } } abstract class Player { protected String name; public Player(String name) { this.name = name; } public abstract void attack(); public abstract void defense(); } class Forwards extends Player { public Forwards(String name) { super(name); } @Override public void attack() { // TODO Auto-generated method stub System.out.println("Forwards attack"+name); } @Override public void defense() { // TODO Auto-generated method stub System.out.println("Forwards defense"+name); } } class Center extends Player { public Center(String name) { super(name); } @Override public void attack() { // TODO Auto-generated method stub System.out.println("Center attack"+name); } @Override public void defense() { // TODO Auto-generated method stub System.out.println("Center defense"+name); } } class Guards extends Player { public Guards(String name) { super(name); } @Override public void attack() { // TODO Auto-generated method stub System.out.println("Guards attack"+name); } @Override public void defense() { // TODO Auto-generated method stub System.out.println("Guards defense"+name); } } class ForeignCenter { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public void fAttack() { System.out.println("ForeignCenter attack " + name); } public void fDefense() { System.out.println("ForeignCenter defense " + name); } } class Translator extends Player { private ForeignCenter wjzf = new ForeignCenter(); public Translator(String name) { super(name); wjzf.setName(name); } @Override public void attack() { // TODO Auto-generated method stub wjzf.fAttack(); } @Override public void defense() { // TODO Auto-generated method stub wjzf.fDefense(); } public ForeignCenter getWjzf() { return wjzf; } public void setWjzf(ForeignCenter wjzf) { this.wjzf = wjzf; } }
相关文章推荐
- 大话设计模式之PHP篇 - 适配器模式
- 【结构型模式】《大话设计模式》——读后感 (12)在NBA我需要翻译?——适配器模式
- 《大话设计模式》之适配器模式
- 《大话设计模式》之--第17章 在NBA我需要翻译----适配器模式
- 大话设计模式-----(六)状态模式、适配器模式
- 大话设计模式--适配器模式 Adapter -- C++实现实例
- 大话设计模式之适配器模式
- 《大话设计模式》学习笔记13:适配器模式
- 《大话设计模式》java实现之适配器模式
- 大话设计模式之三种适配器模式
- <十三>读<<大话设计模式>>之适配器模式
- 大话设计模式java版--适配器模式-关于不接口设计错误导致的处理方案
- 适配器模式 -- 大话设计模式
- 【读书笔记】大话设计模式—适配器模式
- 大话设计模式--适配器模式 Adapter -- C++实现实例
- 大话设计模式——适配器模式
- 大话设计模式(Python版)--适配器模式
- 大话设计模式-适配器模式
- <<大话设计模式>>之适配器模式