第十七章 适配器模式

适配器模式:将一个类的借口转换成客户希望的另外一个接口。

应用场景:系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器模式,目的是使控制范围之外的一个原有对象与某个接口匹配。主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。

注意:应该注意其应用场景,不能本末倒置。

/**
 * Created by hero on 16-4-4.
 */
public abstract class Player {
    private String name;

    public abstract void attack();

    public Player(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
/**
 * Created by hero on 16-4-4.
 */
public class Forward extends Player {
    @Override
    public void attack() {
        System.out.println("forward player " + getName() + " attack.");
    }

    public Forward(String name) {
        super(name);
    }
}
/**
 * Created by hero on 16-4-4.
 */
public class ForeignCenter {
    private String name;

    public void 进攻() {
        System.out.println("外籍中锋 " + name + " 进攻");
    }

    public ForeignCenter(String name) {
        this.name = name;
    }
}
/**
 * Created by hero on 16-4-4.
 */
public class Translator extends Player {
    private ForeignCenter center;

    @Override
    public void attack() {
        center.进攻();
    }

    public Translator(String name) {
        super(name);
        center = new ForeignCenter(name);
    }
}
public class Main {

    public static void main(String[] args) {
        Player hhd = new Forward("hhd");
        hhd.attack();
        Player ym = new Translator("ym");
        ym.attack();
    }
}
时间: 2024-08-10 15:10:51

第十七章 适配器模式的相关文章

大话设计模式第十七章--适配器模式

<?php abstract class Target { abstract public function request(); } class Normal extends Target { public function request() { echo "NORMAL REQUEST"; } } class Adaptee { public function special_request() { echo "SPECIAL REQUEST"; } }

个人:构建之法第十七章读后感

第十七章在开始讲一个项目中的三个角色: 猪:项目的所有者,成功了是最大收益者,失败了最大损失者 鸡:项目的参与者,成功了得到应得的酬劳,失败了也没什么损失 鹦鹉:项目的外援 这一节应该是给“猪”说的,猪需要弄清团队成员投入/承诺/责任,这很重要,也是猪的责任. 分配好角色后,完成项目的过程也会有各种各样的问题: 在做事上会分为:做事的,不做事的,不让别人做事的,做假事的,假装做事的 项目完成后,如何分配利益又是一个问题:比资历?平均?比效率?团队互评?比犯得过错? 书中提出的解决办法: 20%给

第十四——十七章作业

                                                                                                     第十四章 15.3.1 有些成功人士或公司认为不需要独立的测试角色(Test),你怎么看? 在一些软件公司中,QA的工作中包含了Test的角色,负责验证程序是否符合预先设计的功能和特性.但是QA的工作量是很多的,一个好的QA不仅需要对程序架构有着很好的理解,对程序功能和性能都有着较深的理解,并且要

CSS3秘笈复习:十三章&amp;十四章&amp;十五章&amp;十六章&amp;十七章

第十三章 1.在使用浮动时,源代码的顺序非常重要.浮动元素的HTML必须处在要包围它的元素的HTML之前. 2.清楚浮动: (1).在外围div的底部添加一个清除元素:clear属性可以防止元素包围浮动元素.关键字:left.right或both. (2).浮动外围元素:让包含浮动元素的<div>也浮动.选择这种方法一定要在浮动容器后面的任何元素中添加一个clear属性,确保浮动元素落到容器的下方. (3).利用overflow : hidden.另一种常见的方法是在外围的样式中添加以下属性:

《构建之法》第十七章读后感

通过阅读<构建之法>第十七章,不能说对我造成了什么深远的影响,但是还是感触颇深: 第一,工作分配的重要性,说道工作分配,不得不说我们个小组的组长们,组长不仅仅是一个团队的领导者,更是这个团队的灵魂.它不仅需要了解随时掌握各组员的动向,更重要的是,他需要了解各组员的能力,然后根据个人的能力,然后再去非陪相应的任务,只要这样才能做到“物尽其用”,才能更好的完成我们的项目,有时甚者能更创造出以外的效果,达到更完美的状态.这不仅是组长的能力  其实其无时无刻也体现着我们这个小组的团结力和创造力.当初选

第十七章 路由交换机编程

                第十七章    路由交换机编程 MTU = 64KB 毕竟是理想,现阶段实现起来还是有难度:牵涉到较多问题,与大网同步.流量平衡.时隙交换等.所以,APO还是决定MTU = 48E = 1536B,包含头部2E.帧同步头8B.尾部CRC的4B等:数据包的有效内容(不含头部)为45E = 1440B.头部2E = 64B,其中MAC头14B.IP头18B.TCP/UDP/ICMP头32B. 二层交换机是以存储转发为主设计,三层以上的交换机是以256位差分总线的时隙交

Gradle 1.12 翻译——第十七章. 从 Gradle 中调用 Ant

有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com/1.12/userguide/userguide.html 本文原创,转载请注明出处:http://blog.csdn.net/maosidiaoxian/article/details/41204073 关于我对Gradle的翻译,以Github上的项目及http://gradledoc.qin

2017.2.16 开涛shiro教程-第十七章-OAuth2集成

原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 开涛shiro教程-第十七章-OAuth2集成 1.OAuth2介绍 (1)应用场景 很多开放平台,比如新浪微博开放平台,都在使用开发API接口供开发者使用.即带来了,第三方应用要到开放平台授权的问题.OAuth就是做这个的. 1 OAuth2官网:http://oauth.net/2/ 2 OAuth2协议:http://tools.ietf.org/html/

Gradle 1.12用户指南翻译——第四十七章. Build Init 插件

文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc 本文翻译所在分支: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/usergu