Ruby设计模式:如何创建可扩展的工厂类?
在Ruby中,工厂模式是一种常见的设计模式,它提供了一种在不改变代码的情况下灵活地创建对象的方法。工厂模式的主要优点是它可以将对象的创建过程与使用过程分离,从而使得代码更加灵活和可扩展。
要创建可扩展的工厂类,首先需要在类中定义一个产品接口,这个接口应该包含所有产品对象的公共方法。然后,可以根据需要创建多个具体的产品类来实现这个接口。在工厂类中,可以通过调用产品接口的方法来创建产品对象。
一个可扩展的工厂类的示例代码如下:
class Product
def initialize(name)
@name = name
end
def name
@name
end
end
class Factory
def initialize(product_name)
@product_name = product_name
end
def create_product
Product.new(@product_name)
end
end
class ConcreteProduct1 < Product
def initialize(name)
super(name)
end
end
class ConcreteProduct2 < Product
def initialize(name)
super(name)
end
end
factory = Factory.new("ProductA")
product = factory.create_product
puts product.name # 输出 "ProductA"
在这个例子中,我们定义了一个产品接口 Product
,并定义了两个具体产品类 ConcreteProduct1
和 ConcreteProduct2
,它们都实现了 Product
接口的 name
方法。然后,我们定义了一个工厂类 Factory
,它包含一个 create_product
方法,用于创建产品对象。在 Factory
类中,我们通过调用 Product.new
方法来创建产品对象。
通过这种方式,我们可以根据需要添加更多的具体产品类,而无需修改工厂类的代码。例如,我们可以添加一个 ConcreteProduct3
类,然后使用 Factory
类创建 ConcreteProduct3
对象:
class ConcreteProduct3 < Product
def initialize(name)
super(name)
end
end
factory = Factory.new("ProductA")
product = factory.create_product
puts product.name # 输出 "ProductA"
这个例子展示了如何通过定义产品接口和具体产品类来实现工厂模式,并且可以通过添加新的具体产品类来扩展工厂类。
领取专属 10元无门槛券
手把手带您无忧上云