美文网首页PHP
设计模式之工厂方法

设计模式之工厂方法

作者: 守望星空l | 来源:发表于2018-01-01 02:15 被阅读0次

    工厂方法是在简单工厂的基础上进一步抽象产生的一种设计模式,在新增产品时,简单工厂模式下需要修改原有的文件,不符合开闭原则,而使用工厂方法就可以避免修改原有的文件。

    现在需要新增一种AccessModel,将原有的简单工厂修改为工厂方法。

    下面是代码:
    <?php
    
    //抽象产品基类
    abstract class DataModel
    {
        abstract public function handle();
    }
    
    
    //具体产品
    class MysqlModel extends DataModel
    {
        public function handle()
        {
            echo 'this is mysql';
        }
    }
    
    class OracleModel extends DataModel
    {
        public function handle()
        {
            echo 'this is oracle';
        }
    }
    
    class AccessModel extends DataModel
    {
        public function handle()
        {
            echo 'this is access';
        }
    }
    
    
    //抽象工厂类
    abstract class IFactory
    {
        abstract public function create();
    }
    
    //具体工厂
    class MysqlFactory extends IFactory
    {
        public function create()
        {
            return new MysqlModel();
        }
    }
    
    class OracleFactory extends IFactory
    {
        public function create()
        {
            return new OracleModel();
        }
    }
    
    class AccessFactory extends IFactory
    {
        public function create()
        {
            return new AccessModel();
        }
    }
    
    
    $myFactory = new AccessFactory();
    $myModel = $myFactory->create();
    $myModel->handle();
    
    
    

    这样 工厂方法的代码就完成了。
    以后再新增其他数据库的支持时,只有新增类文件就可以了,不需要改动原本的类。

    相关文章

      网友评论

        本文标题:设计模式之工厂方法

        本文链接:https://www.haomeiwen.com/subject/ahmzgxtx.html