抽象工厂模式

抽象工厂模式

<?php
interface PayInterface
{
   public function pay();
}

class AliPay implements PayInterface
{
   public function pay()
   {
       return "支付宝支付";
   }
}

class TenPay implements PayInterface
{
   public function pay()
   {
       return "微信支付";
   }
}

interface LogInterface
{
   public function log();
}

class MysqlLog implements LogInterface
{
   public function log()
   {
       return "记录mysql日志";
   }
}

class RedisLog implements LogInterface
{
   public function log()
   {
       return "记录Redis日志";
   }
}

interface PayFactoryInterface
{
   public function AliPayMake();

   public function TenPayMake();
}

interface LogFactoryInterface
{
   public function MysqlLogMake();

   public function RedisLogMake();
}

class PayFactory implements PayFactoryInterface
{
   public function AliPayMake()
   {
       return new AliPay();
   }

   public function TenPayMake()
   {
       return new TenPay();
   }
}

class LogFactory implements LogFactoryInterface
{
   public function MysqlLogMake()
   {
       return new MysqlLog();
   }

   public function RedisLogMake()
   {
       return new RedisLog();
   }
}

class Order
{
   protected $log;

   protected $pay;

   public function __construct()
   {
       $LogFactory = new LogFactory();
       $PayFactory = new PayFactory();
       $this->log = array(
           'mysql' => $LogFactory->MysqlLogMake(),
           'redis' => $LogFactory->RedisLogMake()
       );
       $this->pay = array(
           'Ali' => $PayFactory->AliPayMake(),
           'Ten' => $PayFactory->TenPayMake()
       );
   }

   public function getLog()
   {
       return $this->log;
   }

   public function getPay()
   {
       return $this->pay;
   }
}

$order = new Order();
var_dump($order->getLog());
var_dump($order->getPay());
exit;
 
原文地址:https://www.cnblogs.com/clubs/p/15169258.html