强制API实现的一小段代码

ZDNet软件频道 时间:2003-03-07 作者:翻译:Java研究组织-FooSleeper |  我要评论()
本文关键词:javatips
如果你希望建立一个可扩展的接口而又希望能够确保包含一些功能性的代码片断,可以用一种带两个方法的抽象类。
如果你希望建立一个可扩展的接口而又希望能够确保包含一些功能性的代码片断,可以用一种带两个方法的抽象类。




应用程序接口(API)的开发者常常希望能够确保一些功能性的小片断总被执行。


举例来说,假设有这样一个翻译系统,开发者希望确保经过它翻译后的词总是以小写形式出现。要达到这个目的,可以提供一个用于调用的public方法,和一个打算要被覆盖的protected方法。

例如:

abstract public class Translator {

    public final String translate(String word) {
        word = word.toLowerCase( );
        return translateWord(word);
    }

    abstract protected String translateWord(String word);

}

现在开发者想要翻译成一种黑话(Pig Latin),于是他可以扩展这个抽象类。例如:

public class PigLatinTranslator extends Translator {

     protected String translateWord(String word) {
         return word.substring(1) + word.substring(0,1) + "ay";
     }

}

用户代码看起来像这样:

....
PigLatinTranslator translator = new PigLatinTranslator( );
translator.translate("seal");
// return ealsay
....

使用translator对象时只能调用public的translate方法,这时会强制调用子类的protected的translateWord方法。这就能保证代码被执行。


译注:Pig Latin,把单词的第一个辅音字母移至词尾并附加上另外的一个音节而成的一种黑话,如用 igpayatinlay来代替piglatin。


责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134