码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式(一)--抽象工厂模式

时间:2018-12-03 17:56:25      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:ret   int   .com   circle   细节   strong   fun   设计模式   系统   

工厂模式:是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

主要解决:主要解决接口选择的问题。

优点 :具体类的创建实例过程与客户端分离,客户端通过工厂的抽象接口操纵实例,客户端并不知道具体的实现是谁。

缺点:如果产品族中需要增加新的产品,则也需要修改抽象工厂和所有的具体工厂。

抽象工厂模式的使用场景:

一个系统不依赖于产品线实例如何被创建、组合和表达的细节。

系统中有多于一个的产品线,而每次只使用其中某一产品线。

一个产品线(或是一组没有任何关系的对象)拥有相同的约束。

实例:我们现在有这么一个场景,要求有不同的形状,每一种形状有不同的颜色,比如圆形,我们要求红色的圆形、赤橙黄绿青蓝紫等各种各样颜色的圆形。

技术分享图片

<?php 

interface shape{
    static public function circle();
    static public function rectange();
}

class redShape implements shape{
    static public function circle(){
        return new redCircle();
    }

    static public function rectange(){
        return new redRectange();
    }
}

class blueShape implements shape{
    static public function circle(){
        return new blueCircle();
    }
    static public function rectange(){
        return new blueRectange();
    }
}
//创建实例
class blueCircle{
    public function getName(){
        echo ‘蓝色圆形‘;
    }
}

$factory=blueShape::circle();
$factory->getName();

  

设计模式(一)--抽象工厂模式

标签:ret   int   .com   circle   细节   strong   fun   设计模式   系统   

原文地址:https://www.cnblogs.com/Caoxt/p/10044332.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!