V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
hujianxin
V2EX  ›  程序员

一个关于类的编程基础问题!

  •  
  •   hujianxin · 2015-10-08 15:05:33 +08:00 · 2801 次点击
    这是一个创建于 3371 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想实现一个提供翻译相关功能的包,包括检测语言,翻译等功能,在中情况是全部写函数呢,还是用类来完成呢?为什么呢?

    里面包含百度翻译、有道翻译、yandex翻译等等。

    我是初学者,请高手指教。
    9 条回复    2015-10-08 23:04:59 +08:00
    vivisidea
        1
    vivisidea  
       2015-10-08 18:42:54 +08:00
    定义一个 ITranslate 接口, public String translate(String input)

    然后写各家实现 GoogleTranslate Implements ITranslate ...
    FrankFang128
        2
    FrankFang128  
       2015-10-08 18:45:44 +08:00 via Android
    没事用啥 OOP ,用 JS 来做函数式编程吧
    sensui7
        3
    sensui7  
       2015-10-08 19:07:36 +08:00 via iPhone
    起码说你要用什么语言写吧?
    adrianzhang
        4
    adrianzhang  
       2015-10-08 21:05:06 +08:00
    用类来实现。一个类,最直观的理解就是一种服务。这种服务可以有多个服务员。套用到你的例子:

    百度翻译等等是有自己的 url , key 等等东西的,这些就是类里的属性。类里的方法就是文字翻译。那还可能有语音翻译呢,以后就在类里加一个方法。

    函数对应的理解是某种动作,因此用来写服务不太合适。
    hujianxin
        5
    hujianxin  
    OP
       2015-10-08 22:21:09 +08:00
    @vivisidea 感谢提供 java 的思路。
    hujianxin
        6
    hujianxin  
    OP
       2015-10-08 22:21:31 +08:00
    @FrankFang128 其实我是想用 python 实现的,没有说明白。
    hujianxin
        7
    hujianxin  
    OP
       2015-10-08 22:21:43 +08:00
    @sensui7 不好意思, Python 实现呢?
    hujianxin
        8
    hujianxin  
    OP
       2015-10-08 22:22:36 +08:00
    @adrianzhang 感谢提供思路。
    trotyl
        9
    trotyl  
       2015-10-08 23:04:59 +08:00
    要用面向对象的话,举个栗子,比如:
    class Translator:
    def __init__(self):
    pass
    def identify_language(self, source):
    pass
    def translate(self, source, destination_language='Chinise'):
    pass

    class BaiduTranslator(Translator):
    ...

    class YoudaoTranslator(Translator):
    ...

    按照传统面向对象差不多就是这样用一个基类或者接口,然后可以继承为不同的子类,子类才是用来实例化的,并且有对应方法的具体实现。。

    但其实 Python 因为是动态类型应该也可以直接 Duck Typing 的。。

    仅供参考。。-_-#
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   984 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:10 · PVG 05:10 · LAX 13:10 · JFK 16:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.