factory methodは、wikipediaの例だとFactoryMethodSampleの中で直接読んでるけど、【ListPrinter型の変数として具体的なDictionaryOrderとかLengthOrderとかの人を受けたい時】に必要になる。
この例だとComparatorの(主にコンストラクタなどの)ポリモーフィズムだけでも良くて、実際何のしがらみも無い場合はcreateされる側のクラスだけで実現できるんだけど、XMLのパーサみたいに特定のクラスのインスタンスを引数として受け取るような構造では、こういう形で渡さざるを得ない場合がある。delegateに近いんだけど、変数としてfactory methodを持つ親オブジェクトを渡した先で、新しいオブジェクトを作らせたい場合。
何か分からないけどListPrinterを使うと書いておいて、呼び出すときに具体的なListPrinerの実装を渡してやることで、それぞれに見合ったオブジェクトを生成できる。
やっぱりコード書かないと抽象的でわかりにくい、、、