2016-09-13 5 views
2

複数のアクションを順番に依存して実行する必要があります。Pythonでステップを実行するための最善のデザインパターン

StepOne(arg1, arg2).execute() 
StepTwo(arg1, arg2).execute() 
StepThree(arg1, arg2).execute() 
StepFour(arg1, arg2).execute() 
StepFive(arg1, arg2).execute() 

彼らは皆、同じStepクラスから継承し、同じ2つの引数を受け取ります。

class Step: 
    def __init__(self, arg1, arg2): 
     self.arg1 = arg1 
     self.arg2 = arg2 

    def execute(self): 
     raise NotImplementedError('This is an "abstract" method!') 

これらの操作を順番どおりに実行するにはどのような方法がありますか?ここに適用されるデザインパターンはありますか?

+0

なぜこれらのオブジェクトが単なる機能ではないのですか? – jpmc26

+0

複数のクエリを実行します。彼らはさまざまな種類の更新と挿入のためのステップです。 –

+0

私はそれが何であるかを思い出しませんが、私が好きな言葉があります:「ただ一つの方法のクラスがあれば、方法があります。クラスは何も追加しません。 – jpmc26

答えて

6

ステップクラスのリストを作成し、ループでインスタンス化して呼び出すことができます。

step_classes = [StepOne, StepTwo, StepThree, ...] 

for c in step_classes: 
    c(arg1, arg2).execute() 
+3

私はmap(lambda c:c(arg1、arg2)、step_classes):step.execute() 'の中で'を実行するかもしれませんが、実際には関係ありません。私は懸念の分離が好きです。 –

+0

クール!私は、「クラス」がリストの中に格納されることを知りませんでした! forループを正しく実行する前に、私は実際にこれらのオブジェクトをメモリに作成していません。 –

+2

@RodrigoNey正確に。クラスの種類のリストを保存するだけです。それらは 'c(arg1、arg2)'まで生成されません。 –

関連する問題