Dav*_*ave 14 python design-patterns
我正在努力在Python中实现Bridge设计模式(或者像Adapter这样的替代方案)
我希望能够编写这样的代码来根据提供的URL转储数据库模式:
urls = ['sqlite://c:\\temp\\test.db', 'oracle://user:password@tns_name'];
for url in urls:
db = Database(url);
schema = db.schema()
Run Code Online (Sandbox Code Playgroud)
我把课程定义为
class Database():
def __init__(self, url):
self.db_type = string.split(self.url, "://")[0]
class Oracle():
def schema(self):
# Code to return Oracle schema
class SQLite():
def schema(self):
# Code to return SQLite schema
Run Code Online (Sandbox Code Playgroud)
如何将这3个类"粘合"在一起,这样我才能获得正确执行的第一个代码块?我已经用Google搜索了,但一定要有一个厚厚的一天,因为它只是没有在我脑海里聚集在一起......
提前致谢
Ale*_*lli 26
改为使用工厂模式:
class Oracle(object):
...
class SQLite(object):
...
dbkind = dict(sqlite=SQLite, oracle=Oracle)
def Database(url):
db_type, rest = string.split(self.url, "://", 1)
return dbkind[db_type](rest)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4523 次 |
| 最近记录: |