PHP 设计模式之 工厂



1. 工厂模式

与简单工厂的区别是,将实现推迟到子类

可以不用抽象类,直接用一个接口来定义工厂方法,摒弃掉getMessage()方法,外部直接调用公开的模板方法(factoryMethod)即可


2. 实列

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

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

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


abstract class MessageFactory {
    abstract protected function factoryMethod();
    public function getMessage() {
        return $this->factoryMethod();
    }
}

class AliFactory extends MessageFactory {
    protected function factoryMethod(){
        return new AliMessage();
    }
}

class BaiduFactory extends MessageFactory {
    protected function factoryMethod(){
        return new BaiduMessage();
    }
}

$factory = new BaiduFactory();
$message = $factory->getMessage();
echo $message->send('您有新的短消息,请查收');
posted @ 2020-12-28 13:43  linsonga  阅读(67)  评论(0)    收藏  举报