デザインパターン プログラミング Java

結城浩氏のPrototypeパターン 練習課題6-1の回答例

投稿日:2020年7月18日 更新日:

結城浩氏著作「Java言語で学ぶデザインパターン入門」
Prototypeパターン 練習課題6-1の回答例です。

課題の概要

UnderLinePen、MessageBoxクラスのcreateClone()を共通化する。

Template Methodに変更する例

Productインターフェースを、抽象クラスに変更します。
そして、createClone()メソッドを具象メソッド化することで共通化させます。

変更前(interface)

変更後(abstract class)

ProductクラスにcreateClone()を実装したため、
UnderLinePen、MessageBoxクラスのcreateClone()は削除します。

クラス図

concreteProductを作成する例

Productインターフェースはそのままにし、
新たに抽象クラス(ConcreteProduct)を作成します。

メソッドについては以下のようにします。
・use():継承先のクラス(UnderLinePen、MessageBox)で実装するため、抽象メソッドとする。
・createClone():共通化するために具象メソッドとする。

ConcreteProduct

UnderLinePen、MessageBoxの変更

ConcreteProductを継承し、createCloneメソッドを削除します。

クラス図

まとめ

どちらであっても抽象クラスで処理を共通化していることがわかると思います。
抽象クラスに置き換えたケースでは単純に処理を共通化しました。
ConcreteProductを作成したケースでも処理の共通化という点では同じですが、
他のConcreteクラスを追加できるようにしてあるという点で拡張性があります。

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-デザインパターン, プログラミング, Java
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

【Java入門】Supplierの使い方まとめ

概要 Supplierとは供給者という意味です。 その名の通り、引数を取らずに戻り値を受け取ります。   基本的な使い方 Supplier<T> getメソッドによってT型の結果を受け取り …

【Java】オブジェクト指向の練習題材(会員オブジェクト)

前回記事、オブジェクト指向とは何なのかを簡単に説明してみるの練習題材です。   仕様 以下の会員クラスを作成し、Mainクラスで表示する。 会員クラスには、「会員」という単位で持つことできる …

【SpringBoot入門】#9~ 更新画面の作成

左側のコンテンツ40% 右側のコンテンツ60% ※2021/01/09  画面遷移等のバックエンド側の内容が抜けていたので追記しました。 概要 検索結果一覧から編集ボタン押下で遷移してくる更新画面です …

【Java入門】繰り返し処理(while, for)

概要 繰り返し処理の制御構造について学んでいきましょう。 繰り返しには以下があります。 while(条件に一致する間だけ繰り返す) do-while(一度必ず実行し、その後は条件に一致する間だけ繰り返 …

【Java入門】Integerの使い方まとめ

概要 「Integerはint型のフィールドを1つだけ持つラッパークラスである」 ということが公式に書かれています。 つまりint型の値を持ち、様々なメソッドを備えたオブジェクト型であるということです …

記事を探す

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。