プロパティファイルで無修正ものを作る〜ツイートイントロダクション前回は、メインメソッドの修正を行わないでのコマンド追加実装をやりました。具体的には、コンストラクタに作成した、クラスをマップに登録する処理を追加します(1行)。これもなんだかんだとクラスの修正をしているのでイマイチです。メインクラスを修正しないこの方向でコマンドを追加する方法を実践したいと思います。その方法は以下の手順で行います。プロパティファイルにキーとクラスの完全名をセットにして登録するクラスの完全名からクラスのインスタンスを取得して実行するようにする上記のような形になります。」と思った方、詳細を下に記載します。修正をしなくても「クラスを追加」もしくは、「新しい機能の実装を追加」するためには「依存関係を分断」してやる必要があります。依存関係とは「関連性がある」ということ、つまり「関連性がある=片方を修正したら、もう片方も修正する必要がある」という関係が出来上がっていることです。世間では「依存関係の注入」などという言葉で言いますが、実際どういうことか?に関して触れていることが少ないように感じています。実装方法に関してはいろんな記事があり、わかりやすく説明がされていると思います。依存関係を分断しようということです。具体的には下のように考えます。新しい機能を追加するときには今実装している部分を修正したくない新しく機能を追加するのと、実装中のクラスを修正しない方法は?大雑把に、上のように考えます。サンプルとして今回のサンプルアプリを参考にして考えてみます。現状の実装はGitにあるソースを見てもらうと一目瞭然です、一部抜粋して以下に示します。}}動きは下の動画のようになります。この状態では、Mapにコマンドクラスを追加してやれば新しい機能を追加できます。修正するポイントはコンストラクタのみになります。「ここまできたら最後までいけ!」と思うのが人情(自分だけでしょうか?(笑))、なのでやってしまいましょう。生成したインスタンスのメソッドを実行するこのようにしてやれば、メインクラスの修正はいりません。cmd;}このように、メインメソッドの修正を行わなくてもCommandIFを実装したクラスの数だけコマンドに対する実行処理を作成することができます。その代わり、プロパティファイルにキーと値を追加する必要がありますが。コードを修正するとテストを行う必要があるので格段に余計な手間と時間を省くことができます。「無修正」エロいですねぇ(笑)できた時間を使用して、心と体のリフレッシュ及び、楽しい時間を過ごす。これが平和への第一歩だと思います。このように、時間を大切に使わないと、昔の不況時代のように「寝る暇がない!」とか「今日も漫画喫茶でお泊まり!」とか。人間の尊厳が無いような、不幸なことになってしまうので、日々精進を重ねることが大切だと思います。趣味にしてしまうのが一番手っ取り早いという噂もあるとか無いとか(笑)でわでわ。