Dan*_*tos 7 ruby factory-method factory-pattern
我知道工厂方法是一个类方法,它利用self关键字并实例化它自己的类的对象.我不明白这是如何有用的,或者它如何扩展initialize方法的功能.
我正在创建一个创建命令行地址簿的项目,要求我在Person类上使用工厂模式,这样我就可以创建具有不同属性的Trainee或Instructor(子类).
Chr*_*lle 13
工厂类是一种干净的方法,可以使用单个工厂方法生成各种对象.它需要一个参数,一个参数告诉方法要创建哪种对象.例如,根据传入的符号生成a Employee或a Boss:
class Person
def initialize(attributes)
end
end
class Boss
def initialize(attributes)
end
end
class Employee
def initialize(attributes)
end
end
class PersonFactory
TYPES = {
employee: Employee,
boss: Boss
}
def self.for(type, attributes)
(TYPES[type] || Person).new(attributes)
end
end
Run Code Online (Sandbox Code Playgroud)
然后:
employee = PersonFactory.for(:employee, name: 'Danny')
boss = PersonFactory.for(:boss, name: 'Danny')
person = PersonFactory.for(:foo, name: 'Danny')
Run Code Online (Sandbox Code Playgroud)
我还写了一篇关于该主题的更详细的博客文章:工厂模式