AbstractクラスとFactoryクラスを作成