博客列表 >【Part3】单例模式/普通和抽象工厂模式演示(0218)

【Part3】单例模式/普通和抽象工厂模式演示(0218)

暴风战斧
暴风战斧原创
2020年03月22日 00:40:29604浏览

【抽象工厂】

<?php

namespace day18;

// 导入商城类
use chapter5\D;
use me\base\inc02\iShop;
use me\base\inc02\Jd;
use me\base\inc02\Duo;
use me\base\inc02\Tmall;

// 自动加载
require __DIR__ . '/autoload.php';

// 商城类
class Shopping2
{
    // 商城平台
    private $shop = null;

    // 由抽象工厂类完成实例化依赖对象的过程
    public function __construct(iShop $shop)
    {
        // 将依赖工厂类换成面向接口的抽象工厂模式
        $this->shop = $shop;
    }

    // 调用外部依赖对象的方法
    public function goShopping() {
        return $this->shop->shop() . ' --> 省钱更省心!';
    }
}

// 客户端调用
echo (new Shopping2(new Tmall()))->goShopping() . '<br>';
echo (new Shopping2(new Duo()))->goShopping() . '<br>';
echo (new Shopping2(new Jd()))->goShopping() . '<br>';

class Shopping2_1
{

    public function goShopping(iShop $shop) {
        return $shop->shop() . ' ==> 省钱更省心!';
    }
}

echo '<hr>';
// 客户端调用:在普通方法中调用
echo (new Shopping2_1())->goShopping(new Tmall()) . '<br>';
echo (new Shopping2_1())->goShopping(new Duo()) . '<br>';
echo (new Shopping2_1())->goShopping(new Jd()) . '<br>';

抽象工程及扩展.png

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议