LOADING

Go和Java实现工厂方法模式

运维1个月前发布 杨帆舵手
17 0 0
广告也精彩
欢迎指数:
参与人数:

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

// 定义产品接口
type Product interface {
GetName() string
}
// 具体产品1
type ConcreteProduct1 struct{}
func (p *ConcreteProduct1) GetName() string {
return "Product 1"
}
// 具体产品2
type ConcreteProduct2 struct{}
func (p *ConcreteProduct2) GetName() string {
return "Product 2"
}
// 定义工厂接口
type Factory interface {
CreateProduct() Product
}
// 具体工厂1
type ConcreteFactory1 struct{}
func (f *ConcreteFactory1) CreateProduct() Product {
return &ConcreteProduct1{}
}
// 具体工厂2
type 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();
}
// 具体产品1
class ConcreteProduct1 implements Product {
public String getName() {
return "Product 1";
}
}
// 具体产品2
class ConcreteProduct2 implements Product {
public String getName() {
return "Product 2";
}
}
// 定义工厂接口
interface Factory {
Product createProduct();
}
// 具体工厂1
class ConcreteFactory1 implements Factory {
public Product createProduct() {
return new ConcreteProduct1();
}
}
// 具体工厂2
class 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);
}
}

通过工厂方法模式,我们可以通过调用工厂的方法来创建不同的产品对象,而无需在客户端直接实例化具体产品。这样的设计使得系统更加灵活,易于扩展和维护。
希望这个示例对你有帮助!如果你还有任何问题,请随时提问。

<span>香港五网CN2网络云服务器链接:www.tsyvps.com</span>
<span>蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。</span>

此站内容质量评分请点击星号为它评分!

您的每一个评价对我们都很重要

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

© 版权声明
广告也精彩

相关文章

广告也精彩

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...