17.适配器模式

来源:互联网 发布:win7人工智能 编辑:程序博客网 时间:2024/06/09 20:27
package adapterMode;/* * 适配器模式: * 将一个类的接口转换成客户希望的另外一个接口   * Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 *  *  * 姚明打篮球   刚去NBA 听不懂外语怎么办 *  */public class AdapterMode {public static void main(String[] args) {Player p = new Forwards("小六子");p.Attack();Player q = new Guards("傻大个");q.Attack();Player w = new Center("姚明");w.Attack();/** * 虽然这里输出了 中锋姚明进攻!  但是  姚明刚开始在NBA是听不懂教练说话的 *  * 添加一个外籍中锋 +翻译者类 */Player p1 = new Forwards("小六子");p1.Attack();Player q1 = new Guards("傻大个");q1.Attack();Player w1 = new Translator("姚明");w1.Attack();}}/* * 球员抽象类 */abstract class Player{public String name;public abstract void Attack();public abstract void Defense();}/* *前锋 */class Forwards extends  Player{public Forwards(){}public Forwards(String name){this.name = name;}public void Attack() {System.out.println("前锋"+name+"进攻!");}public void Defense() {System.out.println("前锋"+name+"防守!");}}/* *中锋 */class Center extends  Player{public Center(){}public Center(String name){this.name = name;}public void Attack() {System.out.println("中锋"+name+"进攻!");}public void Defense() {System.out.println("中锋"+name+"防守!");}}/* *后卫 */class Guards extends  Player{public Guards(){}public Guards(String name){this.name = name;}public void Attack() {System.out.println("后卫"+name+"进攻!");}public void Defense() {System.out.println("后卫"+name+"防守!");}}/* * 外籍中锋 */class ForeignCenter{private String name;public void 进攻(){System.out.println("外籍中锋"+name+"进攻!");}public void 防守(){System.out.println("外籍中锋"+name+"防守!");}public String getName() {return name;}public void setName(String name) {this.name = name;}}class Translator extends Player{    private ForeignCenter Center = new ForeignCenter();    public Translator(String name){    Center.setName(name);    }@Overridepublic void Attack() {Center.进攻();}public void Defense() {Center.防守();}}

原创粉丝点击