Ruby上的FactoryMethod模式
我正在学习设计模式。您认为它是FactoryMethod模式的合适示例吗 有单位及其子类:士兵和医生。他们可以打招呼。还有联合工厂、军人工厂和医生工厂。他们按单位生产Ruby上的FactoryMethod模式,ruby,oop,solid-principles,factory-method,Ruby,Oop,Solid Principles,Factory Method,我正在学习设计模式。您认为它是FactoryMethod模式的合适示例吗 有单位及其子类:士兵和医生。他们可以打招呼。还有联合工厂、军人工厂和医生工厂。他们按单位生产 class Unit class GreetError < StandardError; end def greet; raise GreetError; end end class Soldier < Unit def greet; 'I am a soldier'; end end class D
class Unit
class GreetError < StandardError; end
def greet; raise GreetError; end
end
class Soldier < Unit
def greet; 'I am a soldier'; end
end
class Doctor < Unit
def greet; 'I am a doctor'; end
end
class UnitFactory
class CreateUnitError < StandardError; end
def create_unit; raise CreateUnitError; end
end
class SoldierFactory < UnitFactory
def create_unit; Soldier.new; end
end
class DoctorFactory < UnitFactory
def create_unit; Doctor.new; end
end
class Army
attr_reader :unit_factory, :count, :units
def initialize(unit_factory, count)
@unit_factory = unit_factory
@count = count
@units = []
gather
end
def gather
count.times { units << unit_factory.create_unit }
end
def greet
units.map { |unit| unit.greet }
end
end
类单位
类标准错误;结束
问候;引起恐慌;结束
结束
班士兵<单位
def问候我是一名士兵;结束
结束
班级医生<单位
def问候我是医生;结束
结束
类单位工厂
类CreateUnitError 数一下{单位别忘了医生!没人会受伤的!别忘了医生!没人会受伤的