デザインパターン

Generation Gapパターンとは?

最近関わっているプロジェクトでソースコードを自動生成するツールがあってそのツールでGeneration Gapパターンという聞いたことのないデザインパターンを使っていた。 はじめて聞いたデザインパターンだったので調べてみた。 Generation Patternとは、ソースコードを自動生成ツールがあることを前提としており、ソースコードを自動生成した後、そのコードに手を加えると再度自動生成した際に手を加えた部分が消えてしまうので、サブクラスを作ってそこに手を加えるというもの。 Javaのクラスを自動生成するツールをPythonで作ってみた。 このツールを実行すると名前、年齢、体重をフィールドとSetter、Getter、toStringメソッドを持つHumanクラスを自動生成する。 実行すると以下のようなクラスが生成される。 public class Human{ protected String name; protected int age; protected double weight; public Human(String name, int age, double weight){ this.name = name; this.age = age; this.weight = weight; } public String toString(){ return "name=" + this.name + ", " + "age=" + this.age + ", " + "weight=" + this.weight; } } このHumanクラスには手を加えず、Humanクラスを継承したMyHumanクラスを自分で作り、10代かどうかを判定するメソッドを追加する。 public class MyHuman extends Human{ public boolean isTeen(){ return super.