工厂方法模式是一种常用的创建型设计模式,它通过定义一个创建对象的接口,但具体创建哪个对象则由子类决定。下面是使用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); } }
通过工厂方法模式,我们可以通过调用工厂的方法来创建不同的产品对象,而无需在客户端直接实例化具体产品。这样的设计使得系统更加灵活,易于扩展和维护。
希望这个示例对你有帮助!如果你还有任何问题,请随时提问。