デザインパターン プログラミング 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


関連記事

【SpringSecurity】#2~ ユーザ毎の権限設定(認可)

概要 権限によって、アクセス可能なページを制限する機能の実装します。 管理者画面を作成し、権限によって画面の出し分けを行います。 前提 #1~ ログイン画面の実装が完了していること。 管理者画面の追加 …

【SpringSecurity】#3~ 独自のログイン画面

概要 オリジナルのログイン画面を実装する方法です。 以下の内容になっています。 ログイン用のHTMLを用意する。 Controllerにログインの遷移先を定義する。 SecurityConfigクラス …

ExcelをA1で拡大率100%にするツール(サブフォルダ全て)

たくましゅくじょさんのところで公開されていた、 「エクセルで全シートの拡大率を100%にしA1セルを選択するマクロ」 をサブフォルダ全てに対応させたバージョンを作成しました。 会社の納品ドキュメントを …

【JdbcTemplate】IN句に値を入れて複数件取得する方法

JdbcTemplateでIN句に毎回異なる数の値をセットして、 複数のレコードを取得する場合は、「NamedParameterJdbcTemplate」で取得することができます。 コード例 [cra …

オブジェクト指向とは何なのかを簡単に説明してみる

オブジェクト指向とは何なのか? これを私の理解を元に、ごくごく簡単に説明してみたいと思います。   オブジェクト指向とは? オブジェクト指向とは何かを説明するために、 「オブジェクト」と「指 …

記事を探す

SpringFramworkの良書

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

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