php 设计模式之 抽象工厂



1. 抽象工厂模式

还是将实现推迟到子类,但是抽象工厂里面不仅仅只返回一个对象,而是返回一堆


2. 实列

interface Message {
    public function send(string $msg);
}

class AliMessage implements Message {
    public function send(string $msg) {
        return '阿里云短信内容:' . $msg;
    }
}

class BaiduMessage implements Message {
    public function send(string $msg) {
        return '百度SMS短信内容:' . $msg;
    }
}


interface Push {
    public function send(string $msg);
}

class AliPush implements Push {
    public function send(string $msg) {
        return '阿里云发送成功:' . $msg;
    }
}

class BaiduPush implements Push {
    public function send(string $msg) {
        return '百度发送成功:' . $msg;
    }
}


interface MessageFactory{
    public function createMessage();
    public function createPush();
}

class AliFactory implements MessageFactory {
    public function createMessage() {
        return new AliMessage();
    }
    public function createPush() {
        return new AliPush();
    }
}

class BaiduFactory implements MessageFactory {
    public function createMessage() {
        return new BaiduMessage();
    }
    public function createPush() {
        return new BaiduPush();
    }
}

$factory = new AliFactory();
// $factory = new BaiduFactory();
$message = $factory->createMessage();
$push = $factory->createPush();
echo $message->send('您已经很久没有登录过系统了,记得回来哦!');
echo $push->send('您有新的红包已到帐,请查收!');
posted @ 2020-12-28 14:27  linsonga  阅读(67)  评论(0)    收藏  举报