Go和Java实现工厂方法模式

2024年 5月 16日 75.5k 0

工厂方法模式是一种常用的创建型设计模式,它通过定义一个创建对象的接口,但具体创建哪个对象则由子类决定。下面是使用Go和Java分别实现工厂方法模式的示例:

Go实现工厂方法模式的代码示例:

// 定义产品接口type Product interface {
    GetName() string}// 具体产品1type ConcreteProduct1 struct{}func (p *ConcreteProduct1) GetName() string {    return "Product 1"}// 具体产品2type ConcreteProduct2 struct{}func (p *ConcreteProduct2) GetName() string {    return "Product 2"}// 定义工厂接口type Factory interface {
    CreateProduct() Product
}// 具体工厂1type ConcreteFactory1 struct{}func (f *ConcreteFactory1) CreateProduct() Product {    return &ConcreteProduct1{}
}// 具体工厂2type ConcreteFactory2 struct{}func (f *ConcreteFactory2) CreateProduct() Product {    return &ConcreteProduct2{}
}// 客户端代码func Client(factory Factory) {
    product := factory.CreateProduct()
    name := product.GetName()
    fmt.Println("Product Name:", name)
}// 使用示例func main() {
    factory1 := &ConcreteFactory1{}
    Client(factory1)
    factory2 := &ConcreteFactory2{}
    Client(factory2)
}

Java实现工厂方法模式的代码示例:

// 定义产品接口interface Product {    String getName();
}// 具体产品1class ConcreteProduct1 implements Product {    public String getName() {        return "Product 1";
    }
}// 具体产品2class ConcreteProduct2 implements Product {    public String getName() {        return "Product 2";
    }
}// 定义工厂接口interface Factory {    Product createProduct();
}// 具体工厂1class ConcreteFactory1 implements Factory {    public Product createProduct() {        return new ConcreteProduct1();
    }
}// 具体工厂2class ConcreteFactory2 implements Factory {    public Product createProduct() {        return new ConcreteProduct2();
    }
}// 客户端代码public class Main {    public static void client(Factory factory) {
        Product product = factory.createProduct();
        String name = product.getName();
        System.out.println("Product Name: " + name);
    }    // 使用示例
    public static void main(String[] args) {
        Factory factory1 = new ConcreteFactory1();
        client(factory1);
        Factory factory2 = new ConcreteFactory2();
        client(factory2);
    }
}

通过工厂方法模式,我们可以通过调用工厂的方法来创建不同的产品对象,而无需在客户端直接实例化具体产品。这样的设计使得系统更加灵活,易于扩展和维护。

希望这个示例对你有帮助!如果你还有任何问题,请随时提问。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论