skillup

技術ブログ

アーキテクト設計全般 プログラミング全般

abstract,interface,traitなどについて

投稿日:

昔はようわからなかったabstract(継承全般)、interface、traitの使い分けなどについて。

今の現場でいろいろと考えることがあり、自分なりにいろんな方の知見を共有できたので、メモしておこうと思います。

abstract(継承全般)

いわゆる継承ですね。abstractのこともあれば、単純にextendsの継承を使う場合もあります。

使うケースとしては、以下のようなケースですね。

  • 親と子に関してプログラムの骨組みそのものが近いこと(語彙力なくてなかなか良い言葉が思い浮かばない。。。)
  • abstractを使う場合については子で分岐させるような処理がある場合(ifつかうより、子供で処理を分岐させた方が良い)

interface

abstractとの使い分けが一時不明瞭でした。

自分の中では以下のように考えてます。

  • 親子関係などがあるかどうか(プログラム全体の主従関係)は関係ない
  • あくまでメソッド名と引数と戻り値の型を統一させたい場合に使う

単純なモデルなんかで従属関係はないんだけど、便宜上、メソッドと引数、戻り値を統一させたい場合に使うなんてケースがありました。

trait

直近プロジェクトでちょこちょこ使いました。

  • 継承するほどではないけど、一部汎用的なメソッドを使いたい
  • ワンポイント的な形のメソッドなどで使われることが多い

意外にうまく使えるケースが多く、なかなかつかいどころいかんによっては効果を発揮してくれます。

-アーキテクト設計全般, プログラミング全般

執筆者:


comment

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

関連記事

no image

オブジェクト指向設計 依存関係の管理

オブジェクト指向シリーズ。読みにくい本が多い中でオブジェクト指向設計実践ガイドは勉強になるなー。 Contents1 依存関係の管理1.1 メモ1.2 実際のコーディング上のコツ1.3 感想 依存関係 …

no image

オブジェクト指向設計 柔軟なインターフェイス

オブジェクト指向シリーズ。今回はインターフェイスについて。 インターフェイスといっても、implementsを使った実装だけではなく、要はあるクラスが外部の窓口となるときに使うメソッドってことだと思う …

no image

便利すぎる道具の弊害

現在、Javaのプロジェクトでは会社でNetbeansを使っていますが、IDEを使っているばっかりに理解できていないところがありました。便利すぎる道具の弊害ですね・・・ IDEについて一応説明をしてお …

no image

リーダブルコードまとめ

リーダブルコードほぼ読み切ったのでまとめを。チェックリスト化して、常にこれを見ながらコードは書いたほうがよさげ 前半のまとめや参考リンクでみたものとマージします。 Contents1 変数の名称2 コ …

no image

データ構造の基礎知識 中編 ハッシュ

前回の続きです。 前回は配列、連結リストについて学習したので今回はハッシュについて学習します。 Contents1 ハッシュとは?1.1 メリット1.2 デメリット ハッシュとは? key-value …

アーカイブ