介面程式設計 學習 實踐

2021-09-24 23:58:22 字數 1842 閱讀 9221

1.應用場景/目的

應用介面程式設計開發出易擴充套件, 易維護的程式.

2.學習/實踐

環境程式語言: php

2.1 介紹

介面,是類的模板,類又是物件的模板。介面裡面只需要定義需要實現的方法,但是所定義的方法都必須是空方法[沒有方法主體實現],即方法不做具體實現。

簡單說: 介面就類似於產品說明書[聽著很熟悉],不需要了解內部實現,只需要知道怎麼就好。[實際上實現是必然的,不然功能誰來做,只不過不是介面來做,而是由別人來做[實現介面的類來做]]

手冊:程式設計方式分類: 

面向過程程式設計 / 物件導向程式設計[oop] /面向介面程式設計

code:

<?php

inte***ce person

public function sleep()

}class woman implements person

public function sleep()

}//模擬業務需要

//備註:類作為型別提示[也叫型別約束],介面也可以作為型別提示,而且被類更常用

class l

}//直接使用這種方法,呼叫介面中的方法,放心應用到**中即可,

$user = l::factory(new man);

// $user = l::factory(new woman); //直接應用women例項物件即可

// ...很多業務邏輯**

$user->eat();

//...很多業務邏輯**

$user->sleep();

介面的繼承: //介面也是可以繼承,但是介面是不能直接例項化的.

inte***ce ia

inte***ce ib

inte***ce ab extends ia,ib

//或者 不再使用介面ab ,而是直接使test 實現介面ia ib

class test implements ab  //或者將ab 換成 ia,ib  class test implements ia,ib  實際開發中也是常用這種方式

public function sleep()

$test = new test();

$test->eat();

$test->sleep();

echo ia::abc; //使用介面常量

現在業務邏輯變化,不再需要男人類,而是需要女人類,直接將引數變為women的例項物件即可,如上注釋處,而不需要動邏輯**,因為肯定有介面中的方法。

[這就要求我們在設計專案的時候,站在介面的高度進行設計,主要用在模組之間的程式設計,從而實現模組之間的松耦合]

擴充套件抽象類: 抽象類是特殊的介面,或者說介面是特殊的抽象類,區別在於,抽象類可以在類中有些方法可以有具體實現,即方法可以有主體部分  但是抽象類本質還是類,還是要用class 關鍵字,只是有點特殊,所以要加abstract進行標識,而且一定要有空方法的主體花括號

code

abstract class ab

public function eat(){}

public function sleep(){}

}class test extends ab

public function sleep()

}$test = new test();

$test->eat();

$test->sleep();

總結: 【請認真捋一下,物件與類,類與介面,介面與抽象類 [類與抽象類]的關係】

個人認為:

有時候,我們主要是先使用學會使用,理解性東西,在熟悉之後,可能也是自然而然的事情.

後續補充

3.問題/補充

tbd4.參考

後續補充

學習筆記 Linux C程式設計實踐

每天乙個linux命令 學習了 慕課網 linux c語言程式設計基本原理與實踐 簡短的記一下筆記 inlcude先搜尋include環境變數的路徑 inlcude file.h 先搜尋當前目錄 make工具可以把大型專案分成若干模組兒 gcc main.c o main main可以同時執行兩條命...

java併發程式設計實踐學習

1.futuretask有個簡單理解,但是例子不是非常懂,get 是返回結果,沒有結果的話阻塞,為什麼能處理耗時的計算操作呢?2.copyonwritearraylist究竟在什麼時候複製啊?2013 2 20 p294 清單14.3是什麼意思,先驗條件在 用到了 2013 2 21 p294 29...

Mybatis學習之介面程式設計

面向介面程式設計通常是程式設計的良好實踐,我們我在查詢執行sql中也可以轉換成面向介面程式設計方式。public employee getempbyid integer id 複製 getempbyid resulttype com.zhang.employee select id,last nam...