Python - 如何实现桥接(或适配器)设计模式?

13 投票
1 回答
4889 浏览
提问于 2025-04-15 11:49

我在用Python实现桥接设计模式(或者类似的适配器模式)时遇到了困难。

我想写出这样的代码,以便根据提供的URL来导出数据库的结构:

urls = ['sqlite://c:\\temp\\test.db', 'oracle://user:password@tns_name'];
for url in urls:
    db = Database(url);
    schema = db.schema()

我已经定义了一些类,如下:

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

我该如何把这三个类“粘合”在一起,以便让我能正确执行第一个代码块呢?我在网上查了很多资料,但今天脑袋有点转不过来,感觉就是理不清楚……

提前谢谢大家!

1 个回答

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)

撰写回答