Java言語で学ぶデザイパターン入門 6章 Prototype

Java言語で学ぶデザインパターン入門

Java言語で学ぶデザインパターン入門

Prototype:インスタンスから別のインスタンスを生成する
(1)種類が多すぎてクラスにまとめられない場合
(2)クラスからのインスタンス作成が難しい場合
(3)フレームワークと生成するインスタンスを分けたい場合
cloneメソッド、Cloneableインターフェースが関係する

どういうことかというと以下の様なことらしい
(1)扱うオブジェクトの種類が多くてクラスを作ってられない時
(2)ユーザの入力によって生成されるインスタンスの複製を行いたい時
(3)インスタンス生成を特定のクラスに依存させないようにしたい時
→インターフェースによる処理、パラメータの型をインターフェースにすることみたい

インターフェースと実装クラスの関係?
この本ではPrototypeの役割を担うのはインターフェースとなっている。
実装が何であれ、AクラスのA'メソッドの引数の型がBインターフェースであれば、それを実装したCクラスでA'メソッドは実行可能となる
→A、B、Cにてプロトタイプパターンを実現?
であれば、AとBは機能を提供する側が用意して、Cを利用する側が用意するということか?

Prototype(原型)の役
サンプルプログラムではProductインターフェースがこの役を務めた
ConcretePrototype(具体的な原型)の役
サンプルプログラムではProductインターフェースの具象クラスがこの役を務めた
Client(利用者)の役
サンプルプログラムではManagerクラスがこの役を務めた

上記引用で考えるとPrototype、Clientを提供されて、利用する側はConcretePrototypeを作る?
Clientのメソッド内でPrototypeを使うということみたいなので、そう考えるのが自然かなー。

Prototype:インスタンスから別のインスタンスを生成する

これは結局わからなかった、Cloneableインターフェースの説明があったけど、それのことなんだろうか。
cloneメソッドでシャローコピーでもいいからインスタンスのクローンを作ることが出来れば、それはPrototypeパターンを使っているといえるということなのだろうか。