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

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

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(); 
?> 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩在线视频一区二区三区 | 欧美yw193.c㎝在线观看 | 2022色婷婷综合久久久 | 7777奇米四色 | 睡男神的这件小事小说在线阅读 | 被老头操 | 经典三级四虎在线观看 | 国产精品久久久久久久久久久久久久 | gangbang日本 | 男男互操文 | 欧美日韩中文字幕在线视频 | 成人影院在线观看免费 | 亚洲国产精品第一区二区三区 | 蜜桃视频在线观看官网 | 欧美性bbbbbxxxxxddd | 99re最新网址 | 热伊人99re久久精品最新地 | 99精品免费在线 | 国产成人精品在线 | 美女逼逼软件 | 无人在线视频高清免费播放 | 日本免费一区二区三区a区 日本免费三片在线观看 | 草莓视频旧版本 | 色色色资源站 | 久久精品国产免费播高清无卡 | 亚洲福利电影一区二区? | igao网果冻传媒 | 欧美人与禽交片在线播放 | 羞羞私人影院可以直接免费观影吗 | 亚洲视频免费在线观看 | 贰佰麻豆剧果冻传媒一二三区 | 亚洲AV国产国产久青草 | 亚洲国产精久久久久久久 | 国产精品视频一区二区三区 | 91会员 | 我的绝色岳每雯雯 | 日韩一级片免费观看 | 国产精品色爱综合网 | porono日本动漫 | 青青在线观看 | 欧美多gayxxxx |