GoF设计模式在架构中的应用
GoF设计模式在架构中的应用
设计模式与架构的关系
GoF(Gang of Four)的23种设计模式是软件工程的基石,它们为架构设计提供了经过验证的解决方案模板。在架构层面,设计模式不仅是代码层面的技巧,更是系统级设计决策的基础。
// 工厂模式在架构中的应用 - 抽象工厂创建整个产品族
public interface DatabaseFactory {
Connection createConnection();
QueryExecutor createQueryExecutor();
TransactionManager createTransactionManager();
}
public class MySQLFactory implements DatabaseFactory {
public Connection createConnection() { return new MySQLConnection(); }
public QueryExecutor createQueryExecutor() { return new MySQLQueryExecutor(); }
public TransactionManager createTransactionManager() { return new MySQLTransactionManager(); }
}
创建型模式在架构中的应用
创建型模式解决对象创建问题,在架构中对应服务实例化和依赖注入。单例模式确保全局唯一实例,工厂模式解耦对象创建与使用,建造者模式处理复杂对象的分步构建。Spring框架的IoC容器就是工厂模式的典型实现,通过BeanFactory管理对象生命周期。
// 建造者模式 - 构建复杂配置对象
ServerConfig config = ServerConfig.builder()
.host("0.0.0.0")
.port(8080)
.sslEnabled(true)
.connectionPool(100)
.timeout(Duration.ofSeconds(30))
.build();
结构型模式在架构中的应用
结构型模式关注类与对象的组合。适配器模式用于遗留系统集成,代理模式实现远程调用和权限控制,装饰器模式为对象动态添加功能。微服务架构中,API网关就是代理模式的体现,统一处理认证、限流、日志等横切关注点。
# 适配器模式 - 统一不同数据源的访问接口
class DataAdapter(ABC):
@abstractmethod
def read(self, query: str) -> List[Dict]: ...
class MySQLAdapter(DataAdapter):
def read(self, query: str) -> List[Dict]:
return self.mysql_client.execute(query)
class MongoDBAdapter(DataAdapter):
def read(self, query: str) -> List[Dict]:
return self.mongo_client.find(query)
行为型模式在架构中的应用
行为型模式处理对象间的职责分配和通信。观察者模式是事件驱动架构的基础,策略模式支持运行时算法切换,命令模式实现操作的撤销和重放。CQRS模式本质上是命令模式与观察者模式的组合,将读写职责分离以优化各自性能。
// 观察者模式 - 事件驱动架构基础
interface EventObserver {
handle(event: DomainEvent): void;
}
class EventBus {
private observers = new Map<string, EventObserver[]>();
subscribe(eventType: string, observer: EventObserver): void {
const list = this.observers.get(eventType) || [];
list.push(observer);
this.observers.set(eventType, list);
}
publish(event: DomainEvent): void {
const observers = this.observers.get(event.type) || [];
observers.forEach(o => o.handle(event));
}
}