スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ナベアツリファクタリング1

前回の「世界のナベアツにJavaで挑戦」のソースをリファクタリングして保守性をあげてみます。

前のソースだと、3の倍数と3が含まれる数字のときにアホになりましたが、
ナベアツには他にもネタがある(と、思うけど・・)ので新しいネタをする際に
毎回ソースの何箇所かを更新しなくちゃならないのでねたを別クラスとして定義してみます。

リファクタリング前のクラス図

クラス図1


単一のクラスだったのをネタクラスを作成したのがこれ

クラス図2


ナベアツはネタ帳を持っていてそれにネタを書いています。
ですので、ナベアツクラスの属性ネタ帳数字読みネタを追加してやります。
んでナベアツはネタをするときネタ帳リストから数字読みネタを取り出してネタを実行します

ここでネタを3の倍数から5の倍数に変更したい場合は、数字読みネタクラスだけ変更してやればよいです。
ナベアツはなにも変わる必要はありません。 
数字読みのネタの内容が変わるからです。

ですが、これだとナベアツはいつまで経っても数字読みネタだけの一発芸人になってしまいますので
彼の可能性を増やすために、別のネタを追加してやります。

ですが、新しいネタをする場合にナベアツクラスに修正をかける必要があるので、
これはあんまりよくありません。

そこでナベアツはネタ帳からネタを取り出してネタを実行することだけに専念してもらう為に、
それはそれで芸人としてどうかと思うが
インターフェースを使ってみます。

インターフェースを使ったクラス図
クラス図3


ネタインターフェースを作って数字読みネタとまだ見ぬネタはこれをImplementsします。
そうすることでナベアツはどっちのネタもネタとして扱うことができます。
インターフェースを決めてやることでナベアツはネタの中身がどうであれネタを実行することが
できるようになりました。
ここまで来ると芸人失格です

ここまできて気づきましたが結局3の倍数のネタしかできませんね。。
他にも5の倍数やら色んなパターンがあるので
そのパターンもクラス化してパターンの幅を増やしてやります。

数字読みをパターン化したクラス図
クラス図4


ここで作ったのは「特定の数字が含まれるパターン」と「特定の倍数のパターン」、「数字パターン」の3つです。

数字読みネタクラスにこのパターンを持つ読みパターンリストも追加しました。

「特定の数字が含まれるパターン」と「特定の倍数のパターン」は「数字パターン」を継承しており
どっちも「数字パターン」として扱うことが出来ます。
これはさっきのネタインターフェースと同じですが
違うのは「数字パターン」はクラスっていうとこだけ。

「特定の数字が含まれるパターン」と「特定の倍数のパターン」で共通で使うメソッドを
「数字パターン」クラスに持たせます。

あとは違う動作をするメソッドをそれぞれのクラスに記述してやるだけ。

これで新しいパターンが出来た場合は、
数字パターンクラスを継承したクラスを作成して数字ネタクラスに追加してやるだけで済みます。


次回はここまで作ったパターンをソースに落とし込んでみます。

スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

DJコーク

Author:DJコーク
地方で細々とSEまがいの仕事をしています。

楽天ブック
最近の記事
Feed
月別アーカイブ
スポンサードリンク
グラビス|gravis ノーマディック|nomadic ヴィブラム|vibram ロープロ|lowepro
MoMA STORE
MoMAstore
MoMAstore
MoMAstore
MoMAstore
MoMAstore
リンク
カテゴリ
サイト
ランキング
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。