php设计模式 - 抽象工厂模式

类图

只画了主要关键方法,laravel Factory不止这些
工厂类图

代码

<?
// Laravel工厂数据生成为例
// use Illuminate\Database\Eloquent\Factories\Factory;

// 抽象工厂
abstract class Factory{
    protected $model;
    protected $data;
    abstract public function definition();

    public function count(int $count) {
        echo "生成{$count}条数据\n";
        for($i=0; $i<$count; $i++){
            $this->data[] = $this->definition();
        }
        return $this;
    }

    // 执行入库或其他操作
    public function create(){
        echo "写入数据库:{$this->table}\n";
        return $this->data;
    }
}


class UserFactory extends Factory{
    protected $model = 'user';
    public function definition() {
        // echo "生成数据:\n" ;
        return [
            'name' => 'name_' . rand(1, 200),
            'password' => 'password_'. rand(1, 200),
        ];
    }
}

class ArticleFactory extends Factory{
    protected $model = 'article';
    public function definition() {
        return [
            'title' => '文章标题-' . rand(1, 200),
            'desc' => '文章内容',
        ];
    }
}

// 生成2条文章数据
$data = (new ArticleFactory())->count(2)->create();
var_dump($data);

//生成3个用户信息
$data = (new UserFactory())->count(3)->create();
var_dump($data);

/**
* 对于新的方法,只需要新建一个文件类,实现definition方法,返回生成的数据即可
**/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值