面向对象中类应该如何设计?

2017-02-02 21:19:10 +08:00
 llnhhycom

楼主最近在做一个项目,技术采用了 Tornado+Redis , 其中在设计用户账号类的时候为了保证代码不会太分散,就把所有与用户账号有关的操作放到 Account class 中,也包括了 login(),register(), logout()...

这样我在 Account 中使用 python 的 @classmethod 装饰器来装饰与具体实例无关的操作,如 login(),register()等,通过 Account.Login(email, password)来进行一些登陆的操作

我想了解的是这样设计可以吗,会不会导致 Account 类越来越庞大,以后难以维护呢?(或者还有什么其他的缺点?)

Account 类在此:( https://github.com/cufrancis/savemylink/blob/master/lib/Account.py )

demo 在此:( http://savemylink.lllnhhy.com )

1831 次点击
所在节点    Python
4 条回复
lzjamao
2017-02-02 22:05:38 +08:00
不好回答。没有具体的要求,何必劳动众。设计本身就是为了解决实际问题。但我觉得代码写多,会有面向对象的设计感觉 。
bombless
2017-02-02 22:20:11 +08:00
怕膨胀的话完全可以一个类一个方法,习惯就好,哈哈
814084764
2017-02-03 09:46:18 +08:00
难道不应该这么归类么?你的账号的操作能有多少个?
llnhhycom
2017-02-03 10:54:34 +08:00
@814084764 你可以看下我的 Account 类,所有和账号有关的都在 Account 类中:
user = Account(uid=1)

user.nickname // 用户昵称
user.email // 用户邮箱
...
...
user.links() // 用户发布的所有链接
user.link()[0].title // 用户发布的链接的标题

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

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

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

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

© 2021 V2EX