php设计模式【工厂方法】- 伪代码 2021-04-18

最简单的理解工厂方法的伪代码

- 一句话什么是工厂模式? 让所有的new都通过第三方加工生成,直接调第三方。代码中不出现new
    - 好处, 改动提供功能者代码, 不改动调用处代码。     
        - 类似,博主silvercell 和几个好兄弟在北京中关村大厦吃盖饭, 7个人吃盖饭,饭店做饭需要 new7次。
        - 大餐车盒饭。 我吃 =  餐车 :: 分餐() , 兄弟吃= 餐车 :: 分餐()
        - 我们要求要吃水煮鱼,饭店第二天对菜单做修改,还是一车,但多了菜。工厂改动,调用不变。
        - 业务还是, 我吃 =  餐车 :: 分餐() , 兄弟1吃= 餐车 :: 分餐(), 餐车改动跟我的调用方法无关。
      

 


```php
namespace Factory;
// 工厂模式, 使用工厂方法、类 生成对象,不直接在代码里面 new

class DB {}

class Factory {
    static function createDB(...很多参数)
    {
        // ... 各种处理
        $db = new DB;
        return $db;
    }
}


// 使用, 就算使用100次,也是这么调用,功能变了工厂代码修改,调用不变。
Factory::createDB();

//好处: 
//    1. 工厂方法生成后返回的是一个生成好的对象,与产生对象过程高内聚,与调用耦合度低
//     2. 如果生成对象的方法进行变化, 只需要对工厂方法自身做变化,不对外部使用产生影响

// -------------------------------------------------//

class DB {
    private $IP;
    private $PORT;
    private $DB_TYPE;
    private $USER;
    private $PASS;
    private $RES;

    public function __construct($ip , $port, $db_type, $user, $pass)
    {
        $this->IP = $ip;
        $this->PORT = $port;
        $this->DB_TYPE = $db_type;
        $this->USER = $user;
        $this->PASS = $pass;
        $this->connect_db();
        //... 直接让连接返回
        return $this->RES;
    }

    private function connect_db()
    {
        try {
            // ... some method connect db ..
            $this->RES = 'connect';
        }catch( Exception $e){
            //log($e->getMessage());
            // ...
        }
    }

}


$db1 = new DB('147.22.8.21', '3306', 'mysql', 'root' , '12345');
$db2 = new DB('147.22.8.21', '3306', 'mysql', 'root' , '12345');
$db3 = new DB('147.22.8.21', '3306', 'mysql', 'root' , '12345');
$db4 = new DB('147.22.8.21', '3306', 'mysql', 'root' , '12345');

// 突然,不需要 $db_type , 要将参数变成 4个。 是不是每个 new DB() 都要修改
// 回头看, 第一种工厂方法, 完全不需要, 在所有的地方都改, 工厂里怎么改都行,不用去各处new里面改

```

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

银色种子

打赏 >100 请留言,并私信

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值