2023-04-28 Go基础——抽象工厂模式

抽象工厂模式是一种常见的设计模式,它提供了一种方式来创建一组相关或依赖的对象,而不需要指定它们的具体类型。抽象工厂模式通常使用接口或抽象类来定义一组相关对象的抽象接口,然后使用具体的工厂类来实现该接口并创建具体的对象。

在抽象工厂模式中,有两个重要的概念:抽象工厂和具体工厂。抽象工厂定义了一组相关对象的抽象接口,而具体工厂实现了该接口并创建具体的对象。客户端代码通常使用抽象工厂来创建对象,而不需要知道具体的工厂或对象实现。

以下是一个简单的抽象工厂模式的示例,用于创建不同类型的电脑:

type ComputerFactory interface {
    CreateCPU() CPU
    CreateMemory() Memory
}

type DellFactory struct {}
func (f *DellFactory) CreateCPU() CPU {
    return &DellCPU{}
}
func (f *DellFactory) CreateMemory() Memory {
    return &DellMemory{}
}

type HPFactory struct {}
func (f *HPFactory) CreateCPU() CPU {
    return &HPCPU{}
}
func (f *HPFactory) CreateMemory() Memory {
    return &HPMemory{}
}

type CPU interface {
    Run()
}

type Memory interface {
    Store()
}

type DellCPU struct {}
func (c *DellCPU) Run() {}

type DellMemory struct {}
func (m *DellMemory) Store() {}

type HPCPU struct {}
func (c *HPCPU) Run() {}

type HPMemory struct {}
func (m *HPMemory) Store() {}

在这个示例中,ComputerFactory 定义了一组创建 CPU 和 Memory 对象的抽象接口,DellFactoryHPFactory 分别实现了该接口并创建了具体的 CPU 和 Memory 对象。客户端代码可以使用 ComputerFactory 接口来创建不同类型的电脑,而不需要知道具体的工厂或对象实现。

抽象工厂模式可以帮助我们创建一组相关的对象,并将它们的创建细节隐藏在具体工厂中。这样可以使客户端代码更加灵活和可维护,同时也可以提高代码的可复用性。

posted @   lovevivi121  阅读(5)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示