外观模式包含以下几个主要角色:
1. 外观(Facade): 提供了一个简化和统一的接口,将客户端与子系统的交互进行封装。
2. 子系统(Subsystems): 包含了一群相关的类,处理外观所封装的功能。
以下是一个简单的 Python 示例,演示了外观模式用于操作计算机的各个组件:
# 子系统:CPU
class CPU:
def start(self):
return "CPU started"
def shutdown(self):
return "CPU shutdown"
# 子系统:内存
class Memory:
def load(self):
return "Memory loaded"
def unload(self):
return "Memory unloaded"
# 子系统:硬盘
class HardDrive:
def read(self):
return "Hard Drive read"
def write(self):
return "Hard Drive write"
# 外观
class ComputerFacade:
def __init__(self):
self.cpu = CPU()
self.memory = Memory()
self.hard_drive = HardDrive()
def start(self):
result = []
result.append(self.cpu.start())
result.append(self.memory.load())
result.append(self.hard_drive.read())
return result
def shutdown(self):
result = []
result.append(self.cpu.shutdown())
result.append(self.memory.unload())
result.append(self.hard_drive.write())
return result
# 客户端
computer_facade = ComputerFacade()
# 使用外观模式简化操作
start_result = computer_facade.start()
print("Computer start:")
for item in start_result:
print(f" {item}")
shutdown_result = computer_facade.shutdown()
print("\nComputer shutdown:")
for item in shutdown_result:
print(f" {item}")
在这个示例中,CPU、Memory 和 HardDrive 分别表示计算机的三个子系统。ComputerFacade 是外观,封装了启动和关闭计算机的过程。客户端使用外观模式,通过调用外观的方法来简化操作,无需直接与子系统交互。
外观模式有助于降低客户端与子系统之间的耦合度,使得客户端不需要了解子系统的具体实现,只需要通过外观进行交互。这种模式在对复杂系统进行抽象和简化时非常有用。
转载请注明出处:http://www.zyzy.cn/article/detail/13947/设计模式