Factory Method 書き直し