性格いい人が優勝

インターフェースとトレイトってどっちが正義なんですか?

インターフェースを利用するとそのクラスのように使えるので、関数の引数として別のクラスを同じように使うことが出来ます。

トレイトを利用するとそのクラス内で実装されているようにメソッドを利用できるので、カプセル化の観点から言えばこちらが有利ですが、正直コードの可読性を下げると思います

  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (1件)

PHPとかのお話でしょうか?



トレイトはクラス間をまたがった共通できるロジックを用意するだけであり、
インターフェースとは全く別物ですよ。

インターフェースはクラスの実態を利用元が意識する必要がなく、インターフェースで定義された状態や操作だけで利用元がコントロールできるものです。
インターフェースを実装した時点で、こちらもカプセル化は行えます。

トレイトはインターフェースや抽象クラスの代わりではなく、クラスを構成するにあたって横断的に必要となるコードを実現するにあたっての補助役という位置づけで考えた方がよいです。
意味もなく乱用すると保守性に問題を引き起こす場合があります。

あまりよくありませんが、なんらかの理由でどうしてもクラスの相関関係を崩せない時とかに利用するとか。
継承関係では解決できない、特定のクラスに依存しないけど、何度も同じことを書く横断的な関心ごととかに利用するとか。

ここが分かりやすいです。
https://www.infiniteloop.co.jp/tech-blog/2014/08 …

まずはクラス設計を適切に行うことが大事で、便利だからといって、いつでも考えなく積極的に利用するものではありませんね。
    • good
    • 0
この回答へのお礼

インターフェースを使ってクラスを作ったことがないですか?

お礼日時:2024/07/26 17:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!