''' 桥接模式(Bridge Pattern)可以将抽象与实现解耦,让它们可以独立变化。 这在处理多种分类的书籍时特别有用,比如你想在不同的平台上展示这些书籍,同时这些书籍还分属不同的分类。 下面是一个简单的实现代码示例,展示如何使用桥接模式来构建书城的书籍分类与展示平台: ''' # 定义书籍接口 class IBook: def get_title(self): pass def get_author(self): pass # 具体书籍实现 class NovelBook(IBook): def __init__(self, title, author): self.title = title self.author = author def get_title(self): return self.title def get_author(self): return self.author # 定义抽象分类 class BookCategory: def __init__(self, name): self.name = name self.books = [] def add_book(self, book): self.books.append(book) def get_books(self): return self.books # 定义抽象展示平台 class DisplayPlatform: def display(self, book): pass # 具体展示平台实现 class WebDisplayPlatform(DisplayPlatform): def display(self, book): return f"On the web: {book.get_title()} by {book.get_author()}" class MobileDisplayPlatform(DisplayPlatform): def display(self, book): return f"On mobile: {book.get_title()} by {book.get_author()}" # 桥接类,将分类与展示平台连接起来 class BookShop: def __init__(self, category, platform): self.category = category self.platform = platform def show_books(self): for book in self.category.get_books(): print(self.platform.display(book)) # 客户端代码 if __name__ == "__main__": # 创建书籍 novel1 = NovelBook("The Great Gatsby", "F. Scott Fitzgerald") novel2 = NovelBook("1984", "George Orwell") # 创建分类 fiction_category = BookCategory("Fiction") fiction_category.add_book(novel1) fiction_category.add_book(novel2) # 创建展示平台 web_platform = WebDisplayPlatform() mobile_platform = MobileDisplayPlatform() # 创建书城并展示书籍 web_bookshop = BookShop(fiction_category, web_platform) web_bookshop.show_books() mobile_bookshop = BookShop(fiction_category, mobile_platform) mobile_bookshop.show_books() ''' 在这个示例中,IBook 是一个接口,定义了书籍应有的行为(比如获取标题和作者)。NovelBook 是一个具体书籍类,实现了 IBook 接口。BookCategory 是一个书籍分类类,它可以包含多个书籍实例。 DisplayPlatform 是一个抽象展示平台类,定义了如何展示书籍。WebDisplayPlatform 和 MobileDisplayPlatform 是具体展示平台类,分别实现了 DisplayPlatform 接口,以提供不同的展示方式。 BookShop 是一个桥接类,它将书籍分类与展示平台连接起来,通过 show_books 方法可以展示分类中的所有书籍。 '''