LoginSignup
0
0

More than 1 year has passed since last update.

プログラムの「インターフェイス」って何?

Last updated at Posted at 2021-12-03

他の記事を読んだ(勉強の痕跡)なので
下記のリンクから、元記事様へ行ってくださいまし。。

image.png
(引用元:スミマセン、後で調べて書きます。)

ワタシ的インターフェイスとは、

指すだけで丁度良い電気が流れる「コンセント」(=規格)みたいなもの。

SymfonyはPHPなのに「インターフェイス」の宣言などがあり「Java」みたいで難しい。
そもそもなんでこれインターフェイスの宣言が必要なのかと思ってしまうので、
いろんな記事を読み漁った。

一番良いと思った例文を持ってきた。

インターフェイスの定義

<?php
interface フルーツ {
   public function 値下げを適用();
   public function 価格の表示();
   public function 価格の設定($値段);
}

フルーツのインターフェイスをあらかじめ設定しておく。

クラスの実装

<?php

class りんご implements フルーツ {
   private $値段 = 1000;
   public function 値下げを適用() {
      // 常に2割引
      $this->値段 = $this->値段 * 0.8;
   }
   public function 価格の表示() {
      return $this->値段;
   }
}

class ぶどう implements フルーツ {
   private $値段 = 2000;

   public function 値下げを適用() {
      if ('30' == date('d')) {
         // 30日なら半額
         $this->値段 = $this->値段 / 2;
      }
   }

   public function 価格の表示() {
      return $this->値段;
   }
}

class レモン implements フルーツ {
   private $値段 = 500;

   public function 値下げを適用() {
      // 値引きなし
   }

   public function 価格の表示j() {
      return $this->値段;
   }
}

3つのクラスで「値下げを適用()」メソッドの処理内容が異なっているものの、
3つのクラスは必ず「値下げを適用()」メソッドを持ちます。

それぞれの値引き内容は、このメソッド内の実装部分だけを見ればいいので、
ソースの内容を理解しやすいといえるでしょう。

ふむふむなるほど。


インプリメンツには、条例を施行する、規約を実施する、という意味があります。
interface っていうのが条例で、implements がそれを施行する


っていう意味か。フムフム。

インターフェイス最大のメリット

役割ごとにカテゴライズされた各レイヤー間にインターフェース(契約)を設けることによって、
各レイヤー間を疎結合にし(依存度を低くし)、変更に強いアプリケーション作ることができる

あーそうゆーことね、完全に理解した。
嘘です。以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0