一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP中用接口、抽象類、普通基類實現“面向接口編程”與“耦合方法”簡述

PHP中用接口、抽象類、普通基類實現“面向接口編程”與“耦合方法”簡述

2019-11-19 14:10PHP教程網 PHP教程

邊學邊做的,為方便自己翻閱而發布,更為得到高人指點而發布,歡迎高手指點

代碼如下:

<?php 
/* 
邊學邊做的,為方便自己翻閱而發布,更為得到高人指點而發布,歡迎高手指點...... 
【提示】本例通過測試無誤 
【情景設計】 
模擬計算機主板IDE接口,比如:主板可以存取的儲存器常常有光驅、硬盤、閃存等等, 
為了方便,有必要對這些不同的儲存器設定同一的接口。 
本例還假設一種前所未有的、存取方式與眾不同的外星儲存器也要加到主板上進行存取, 
于是需要采用耦合的設計模式。 
【本例主要講述】 
1、通過接口、抽象類、一般類繼承三種方式達到所謂的“接口”模式,以此說明: 
A、子類對象可以當父類對象用,因為子類是特殊的父類??! 
B、請注意這三種實現方式中接口、抽象類和一般類繼承的基類寫法! 
2、接口模式真的是一紙契約! 
3、程序設計之"耦合設計模式"! 
*/ 
//---------------------------------------------------------------------- 
/*【方式一】接口實現方式:*/ 
interface readandwrite{ 
function read(); 
function write(); 

class motherboard{ 
private $storage; 
function __construct(readandwrite $obj){ 
$this->storage=$obj; 

function read(){ 
$this->storage->read(); 

function write(){ 
$this->storage->write(); 


class flash implements readandwrite{ 
function __construct(){ 
echo "我是閃存:<br>"; 

function read(){ 
echo "開始讀取數據......<br>"; 

function write(){ 
echo "開始儲存數據......<hr>"; 


class yingpan implements readandwrite{ 
function __construct(){ 
echo "我是硬盤:<br>"; 

function read(){ 
echo "開始讀取數據......<br>"; 

function write(){ 
echo "開始儲存數據......<hr>"; 


class disco implements readandwrite{ 
function __construct(){ 
echo "我是光盤:<br>"; 

function read(){ 
echo "開始讀取數據......<br>"; 

function write(){ 
echo "開始儲存數據......<hr>"; 


//---------------------------------------------------------------------- 
/*【方式二】抽象類實現方式: 
abstract class readandwrite{ 
abstract function read(); 
abstract function write(); 

class motherboard{ 
private $storage; 
function __construct(readandwrite $obj){ 
$this->storage=$obj; 

function read(){ 
$this->storage->read(); 

function write(){ 
$this->storage->write(); 


class flash extends readandwrite{ 
function __construct(){ 
echo "我是閃存:<br>"; 

function read(){ 
echo "開始讀取數據......<br>"; 

function write(){ 
echo "開始儲存數據......<hr>"; 


class yingpan extends readandwrite{ 
function __construct(){ 
echo "我是硬盤:<br>"; 

function read(){ 
echo "開始讀取數據......<br>"; 

function write(){ 
echo "開始儲存數據......<hr>"; 


class disco extends readandwrite{ 
function __construct(){ 
echo "我是光盤:<br>"; 

function read(){ 
echo "開始讀取數據......<br>"; 

function write(){ 
echo "開始儲存數據......<hr>"; 


*/ 
//---------------------------------------------------------------------- 
//【方式三】一般類繼承實現方式: 
/* 
class readandwrite{ 
function read(){ 
echo "reading.............."; 

function write(){ 
echo "writing.............."; 


class motherboard{ 
private $storage; 
function __construct(readandwrite $obj){ 
$this->storage=$obj; 

function read(){ 
$this->storage->read(); 

function write(){ 
$this->storage->write(); 


class flash extends readandwrite{ 
function __construct(){ 
echo "我是閃存:<br>"; 

function read(){ 
echo "開始讀取數據......<br>"; 

function write(){ 
echo "開始儲存數據......<hr>"; 


class yingpan extends readandwrite{ 
function __construct(){ 
echo "我是硬盤:<br>"; 

function read(){ 
echo "開始讀取數據......<br>"; 

function write(){ 
echo "開始儲存數據......<hr>"; 


class disco extends readandwrite{ 
function __construct(){ 
echo "我是光盤:<br>"; 

function read(){ 
echo "開始讀取數據......<br>"; 

function write(){ 
echo "開始儲存數據......<hr>"; 


*/ 
//---------------------------------------------------------------------- 
/* 
【耦合模式】 
耦合模式就是將不同標準的兩個類(本例的接口、抽象類、普通基類與外星儲存器有不同的存取方法), 
通過中間轉換器,達到同一標準的目的,就像轉接線一樣——本例就是將unknow類的Rdata、Wdata方法轉 
換成read、write方法,達到和本例的接口、抽象類、普通基類相同的存取方法, 本例的中間轉換器是 
Apdater類。 
由于php中只能繼承一個類但可以繼承多個接口,所以產生了三種耦合方法: 
方法一:中間轉換器Apdater類繼承抽象類或普通基類,但由于php中只能繼承一個類,所以在Apdater 
類中定義一個外星存儲器類unknow的對象,并用重載繼承的抽象類或普通基類的存取方法的方式來轉 
換存取方法,達到同一存取方法的目的。 
方法二:中間轉換器Apdater類繼承外星存儲器類unknow、接口,此時可以直接用Apdater類的存取方法 
(parent::Rdata()與parent::Wdata()——php中子類調用父類方法的方式),和實現接口規定方法, 
來轉換存取方法,達到同一存取方法的目的。 
方法三:與方法一雷同,只是改為繼承(實現)接口; 
*/ 
//---------------------------------------------------------------------- 
/* 
【方法一】 
*/ 
/* 
class unknow{ 
function __construct(){ 
echo "<font color=#ff0000>我是地球人未知的外星儲存器,我有不同于地球儲存器的存取方式:</font><br>"; 

function Rdata(){ 
echo "I'm reading now......<br>"; 

function Wdata(){ 
echo "I'm writing now......<hr>"; 


class Adpater extends readandwrite{ 
private $obj; 
function __construct(unknow $x){ 
$this->obj=$x; 

function read(){ 
$this->obj->Rdata(); 

function write(){ 
$this->obj->Wdata(); 


*/ 
//---------------------------------------------------------------------- 
/* 
【方法二】 
class unknow{ 
function __construct(){ 
echo "<font color=#ff0000>我是地球人未知的外星儲存器,我有不同于地球儲存器的存取方式:</font><br>"; 

function Rdata(){ 
echo "I'm reading now......<br>"; 

function Wdata(){ 
echo "I'm writing now......<hr>"; 


class Adpater extends unknow implements readandwrite{ 
function read(){ 
parent::Rdata(); 

function write(){ 
parent::Wdata(); 


*/ 
//------------------------------------------------------------------------ 
/* 
【方法三】 
*/ 
class unknow{ 
function __construct(){ 
echo "<font color=#ff0000>我是地球人未知的外星儲存器,我有不同于地球儲存器的存取方式:</font><br>"; 

function Rdata(){ 
echo "I'm reading now......<br>"; 

function Wdata(){ 
echo "I'm writing now......<hr>"; 


class Adpater implements readandwrite{ 
private $obj; 
function __construct(unknow $x){ 
$this->obj=$x; 

function read(){ 
$this->obj->Rdata(); 

function write(){ 
$this->obj->Wdata(); 


//【程序主體調用】 
echo "<strong><font color=#990000 size=20px>面向對象程序設計——接口</font></strong><hr>"; 
$storage1=new flash(); 
$computer=new motherboard($storage1); 
$computer->read(); 
$computer->write(); 
$storage2=new yingpan(); 
$computer=new motherboard($storage2); 
$computer->read(); 
$computer->write(); 
$storage3=new disco(); 
$computer=new motherboard($storage3); 
$computer->read(); 
$computer->write(); 
$un_storage=new unknow(); 
$apdaterx=new Adpater($un_storage); 
$computer=new motherboard($apdaterx); 
$computer->read(); 
$computer->write(); 
?> 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 好大好深受不了了快进来 | 青青青青青国产费线在线观看 | а天堂中文最新版在线官网视频 | 国产一区二区不卡 | 国内精品免费 | 狠狠色综合久久婷婷色天使 | 亚洲AV久久无码精品九九软件 | 日本视频高清免费观看xxx | 激情三级做爰在线观看激情 | a毛片免费观看完整 | 黄色大片网 | 国产男技师 | 国产成人亚洲精品91专区高清 | 亚洲午夜精品久久久久久人妖 | 国产精品一区二区久久 | 美女视频黄a | 国产成人91高清精品免费 | 国产精品嫩草影院在线 | 91在线免费播放 | 小小水蜜桃视频高清在线观看免费 | 欧美日韩视频在线第一区二区三区 | v视界影院成片 | 99精彩视频| 国产精品久久久久久久久ktv | 亚洲 欧美 国产 视频二区 | 欧洲网色偷偷亚洲男人的天堂 | 日韩精品视频美在线精品视频 | 色男人综合 | 大奶喷水 | 四虎精品永久免费 | 亚洲精品在线看 | 香蕉成人国产精品免费看网站 | 黄瓜视频黄版 | 亚洲欧美日韩另类在线一 | 国内精品久久久久久中文字幕 | 天天综合色天天综合网 | 久久久久久久99精品免费观看 | 性做久久久久久久 | 天天操天天草 | 亚洲a视频在线 | 国产日韩欧美在线播放 |