PHP工厂模式的理解和总结

PHP工厂模式的理解和总结

每次看设计模式都感觉很奇妙,看不同的文章会发现不同的理解。然而这些模式如果不去写 composer 包,框架,我们很少会用到。但是这种思路是很好的。因为容易忘记所以写下来以供参考。

工厂模式(工厂方法模式)

工厂模式,是由抽象的类决定的 所以的产品都要 去继承一个抽象的接口。每一个产品都有一个工厂。

// 有抽象的类来控制 工厂的生成的产品
interface people
{
    public function sex();
}
// 具体产品的实现
class Women implements people
{
    public function sex()
    {
        // TODO: Implement sex() method.
    }
}

class Men implements people
{
    public function sex()
    {
        // TODO: Implement sex() method.
    }
}


class WomenFactory {
    public function createSex()
    {
        return new Women();
    }
}

class MenFactory{
    public function createSex()
    {
        return new Men();
    }
}

简单工厂

  • 网上说法很多
    不过我认为简单工厂模式就是把工厂生成出来的产品放在一个控制器中去调用,客户端需要什么直接告诉工厂,工厂来进行生产。但是
    1.如果需要添加产品的话我们需要添加新的分支,违背了开闭原则。
    2.如果需要修改莫个产品你需要修改工厂,修改另一个产品你还需要修改工厂违背了单一职责原则。
class Men
{
    public function sex()
    {
        
    }
}
class WoMen
{
    public function sex()
    {
        
    }
}

class PeopleFactory{
     public function createSex($sex)
    {
        switch ($sex){
            case 'men':
                return new Men();
                break;
            case 'women':
                return new  Women();
                break;
        }
    }
}

抽象工厂模式

抽象工厂模式 建立在工厂模式上 然后每一个工厂去继承一个抽象工厂接口,客户端只需要知道抽象工厂接口,无需关系它是那个工厂类,只需要把它当成抽象工厂接口使用即可,但是 如果抽象工厂接口需要添加一个新的功能会影响到所有的工厂。

interface people
{
    public function sex();
}


class Women implements people
{
    public function sex()
    {
        // TODO: Implement sex() method.
    }
}

class Men implements people
{
    public function sex()
    {
        // TODO: Implement sex() method.
    }
}

interface Factory{
    public function created();
}

class WomenFactory implements Factory{
    public function created()
    {
        return new Women();
    }
}
class MenFactory implements Factory{
    public function created()
    {
        return new Men();
    }
}

总结

工厂模式 最主要的就是 不需要考虑如何生成的。只关注与功能。
简单工厂模式-> 就是一个简单小的比如可能就少数功能需要,而且生成的产品很少。如果产品比较多,就需要考虑工厂模式了。当你建造了一个工厂后,让别人调用的时候,就需要考虑抽象工厂模式了。可能你的工厂只需要出一个产品,限购,那你就可以采用静态工厂模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值