0
我在我的應用程序中有一個流程,需要我從「常規」流程中採取額外步驟。通過有條件地添加一個額外步驟重用程序方法
比方說,我有一個這樣的類/方法:
class ImportProcessor
attr_reader : file
def initialize(file)
@file = file
end
def process
validate_file(file)
file_set = split_file(file)
import_files(file_set)
end
end
那類處理我要導入的文件。現在讓我們說我需要在這個過程中增加另一個步驟。現在
我#process方法將需要看起來像這樣:
def process
validate_file(file)
file_set = split_file(file)
api_processing(file)
import_files(file_set)
end
正如你所看到的唯一的區別是#process方法中一個額外的方法調用。有沒有我應該用來完成這個模式,或者你會推薦的其他東西?
我的一個想法是爲我導入的每個文件創建ImportProcessor類的子類,以便通過傳入lambda來爲ImportProcessor#process方法添加方法調用。
事情是這樣的:
class File1 < ImportProcessor
def initialize(file)
super(file)
end
def process
super(lambda {|file| api_processing(file)})
end
private
def api_processing(file)
ApiProcessor.new(file).process
end
end
而且ImportProcessor類現在看起來是這樣的:
class ImportProcessor
attr_reader : file
def initialize(file)
@file = file
end
def process(api_processor=nil)
validate_file(file)
file_set = split_file(file)
api_processor.call(file) if self.is_a?(File1)
import_files(file_set)
end
end