读书人

请问个设计有关问题

发布时间: 2012-03-21 13:33:15 作者: rapoo

请教个设计问题
我现在有个设计问题。。 封装好了一个数据库表操作类,其中保存的是 self.__cursor = conn.cursor() 这样的,在对数据库进行修改完后,需要调用conn.commit才能提交。如果把conn也保存在类中,不合理,又不想弄成全局对象,想再开个线程,专门作数据库维护,又觉得没有必要。。求真相

[解决办法]
connection保存在类中是有必要的,不然,你封装什么呢?封装就是为了将数据库的访问封装起来,那么就要将访问数据库需要的资源封装起来。

如果你的程序需要多个数据库连接,那么,你封装的类可以进行多实例化;如果你的程序仅需要一个数据库连接,那么,你封装的类使用单实例模式。

commit这样的方法,应该是你封装后提供的一个方法。

[解决办法]
不知道sqlite与Oracle有什么差别。根据我的经验,我会将connection实例封装到数据库操作的类中,然后提供各种操作数据库的函数,包括一个函数Commit(),提供事务处理能力。
[解决办法]
封装一般不就是包含在一个类么,不应该提供啥全局函数,或者把conn摆到外面。怎么写自己可以发挥,一般保留原来方法增添新特性,直接用继承方式,如果是大幅改写或限制,就起新类,不过原来的东西还是要在类里生成但隐藏不提供外部操作...

读书人网 >perl python

热点推荐