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

2015-10-08 15:05:33 +08:00
 hujianxin
我想实现一个提供翻译相关功能的包,包括检测语言,翻译等功能,在中情况是全部写函数呢,还是用类来完成呢?为什么呢?

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

我是初学者,请高手指教。
2776 次点击
所在节点    程序员
9 条回复
vivisidea
2015-10-08 18:42:54 +08:00
定义一个 ITranslate 接口, public String translate(String input)

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

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

函数对应的理解是某种动作,因此用来写服务不太合适。
hujianxin
2015-10-08 22:21:09 +08:00
@vivisidea 感谢提供 java 的思路。
hujianxin
2015-10-08 22:21:31 +08:00
@FrankFang128 其实我是想用 python 实现的,没有说明白。
hujianxin
2015-10-08 22:21:43 +08:00
@sensui7 不好意思, Python 实现呢?
hujianxin
2015-10-08 22:22:36 +08:00
@adrianzhang 感谢提供思路。
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 的。。

仅供参考。。-_-#

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/226325

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX