デザインパターン

11月5&6日の学び

UMLで用いる用語の整理 最近ようやくクラス図の偉大さがわかってきた きちんと設計するって大切 関連・汎化・集約の大きく3パターンあることをまずは抑える 関連 線でつなぐ 矢印の場合は方向性あり(ヘッダファイルのインクルードなど一方方向) 汎化 よう…

11月4日の学び

デザインパターンでは継承においてメソッドのIFが共通化されているのが大きい 逆にいうとメソッドのIFを共通化できない場合だと単に処理の共通化可能くらいしかメリットがない Compositeパターン フォルダ&ディレクトリのような再帰的構造に利用される 継承…

11月3日の学び②

移譲 サブクラスが機能拡張する際に、サブクラス内でのオーバロードや新規メソッドの追加ではなく、引数として渡されたクラスを用いること。 早い話が丸投げ。 自分では手を動かさずに外からきた人にやってもらう。 メソッドとしては持っているが自分ではや…

11月3日の学び

ファイルシステムの役割 当然だが新しい物理的な記憶装置が出現するとそれに対応したファイルシステムを利用する必要がある。 端的にいうと物理的な記憶装置を抽象化したレイヤーを提供する ファイルへのインタフェースを提供(ファイルの命名・フォルダ/デ…

10月29日の学び

スレッド処理の注意点 スレッド処理中にsleep処理を実装するのはあまり望ましくない DBアクセス中にsleepに入るとデッドロックの温床になりうる Visitorパターン 余り使う機会はなさそう thisを使うことで呼び出し元クラスに呼び出し先クラスそのものを受け…

10月28日の学び

↓のサイトは神レベルなので時間があるときに読み込んでおくこと qiita.com 「仕様の明確でないメソッドを作るのは迷惑行為です!」 「自分にしか理解できないコードを書くことは迷惑行為です!」 「API の仕様を説明できないのであれば、正しいユニットテス…

10月24日の学び

Javaは1ファイル内に複数クラスを書くことができるが、1ファイル1クラスが原則。基本的に大規模開発向けの言語なので。 MavenもGradleもビルドツール。開発環境の準備〜コンパイル〜warファイルの作成〜デプロイまで一気通貫にしてくる。 WARファイル WARフ…

10月22日の学び

量子コンピュータの勉強会の発表無事に終わった。レベルが高くてびっくり。。。 Flyweightパターン 生成したインスタンスをプールに保存・共有するすることでリソースを節約する 別にオブジェクト指向とは関係ないような気が... Mementoパターン インスタン…

10月21日の学び

昨日は勉強会の資料作成のためブログ更新はできず。。。 Proxyパターン 呼び元と処理を実行するクラスの間に中間のクラスを生成する 処理の実行時に初めて処理を実施するクラスをインスタンス化する サンプルコードを見てインタフェースは要はAPIを実装する…

10月18日の学び

Bridgeパターン 継承と密結合 抽象クラスは機能を提供し、継承するサブクラスは実装を提供するという役割分担がある。 抽象クラスとサブクラスが密結合になるため、機能と実装が密結合となる。 そのためn個の複数の抽象クラスがm個の同じ実装を保つ場合は、n…

スーパークラス・サブクラス

ズバリはっきり書かれていたのでメモ。 両者の役割分担はスーパークラスの抽象メソッドでAPIを定義し、継承したサブクラスで具体的なAPIの中身を実装する。 利用する側はサブクラスをスーパークラスの型に代入することで抽象度の高いスーパークラス経由で呼…

10月17日の学び

qiita.com デザインパターンっていっても全23パターンが重要なわけではないので注意。中には「これ特に命名するほどでもないよね!?」というのもある。 モジュール間の疎結合化を勧めていくと自然と同じことをやっていたことも多い。 以下順不同でつらつら…