门面模式
<?php
//子系统类共3个
class ScenicArea
{
public function Ticket1()
{
echo "景区1门票<br/>";
}
public function Ticket2()
{
echo "景区2门票<br/>";
}
public function Ticket3()
{
echo "景区3门票<br/>";
}
}
class Traffic
{
public function __construct(){}
public function buyBusTicket($from, $to)
{
echo "买入从".$from."到".$to."的汽车票<br/>";
}
public function buyTrainTicket($from, $to)
{
echo "买入从".$from."到".$to."的火车票<br/>";
}
}
class Hotel
{
public function __construct(){}
public function hotel($place)
{
echo "订下".$place."的旅店<br/>";
}
}
//Facade 类
class Facade
{
private $traffic;
private $scenicArea;
private $hotel;
public function __construct()
{
$this->hotel = new Hotel();
$this->traffic = new Traffic();
$this->scenicArea = new ScenicArea();
}
public function oneDay()
{
$this->traffic->buyBusTicket('A','B');
$this->scenicArea->Ticket1();
$this->traffic->buyBusTicket('B','A');
}
public function twoDay()
{
$this->traffic->buyTrainTicket('A','B');
$this->scenicArea->Ticket1();
$this->traffic->buyBusTicket('B','C');
$this->hotel->hotel('C');
$this->scenicArea->Ticket2();
$this->traffic->buyTrainTicket('C','A');
}
}
//客户端调用
$agency = new Facade();
$one = $agency->oneDay();
echo '===========<br/>';
$two = $agency->twoDay();
ioc
<?php
/**
* 服务中的属性
*/
class GoodsInfo{
private $goods;
public function __construct(goods_data $goods_namex)
{
$this->goods = $goods_namex;
}
public function price(){
return $this->goods->name.'的价格是:10元';
}
public function weight(){
return $this->goods->name.'的重量是:1KG';
}
}
/**
* 接口类
* Interface goods_data
*/
interface goods_data{
}
/**
* 服务
* Class apple
*/
class apple implements goods_data{
public $name = '苹果';
}
class banana implements goods_data{
public $name = '香蕉';
}
class pear implements goods_data{
public $name = '梨';
}
/**
* 容器
* Class store
*/
class store{
private $info = [];
public function add(string $goods_name , $goods_info){
return $this->info[$goods_name] = $goods_info;
}
public function search($goods_name){
return ($this->info[$goods_name]);
}
}
/**
* 依赖注入
*/
$app = new store();
$app->add('apple',new apple());
$app->search('apple');
$app->add('GoodsInfo',new GoodsInfo(new apple()));
var_dump($app->search('GoodsInfo')->price());