zoukankan      html  css  js  c++  java
  • 设计模式(一)--抽象工厂模式

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

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

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

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

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

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

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

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

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

    <?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();

    简单工厂模式和工厂模式和抽象工厂模式的区别? 参考:https://www.cnblogs.com/zhi-hao/p/4028169.html

  • 相关阅读:
    基于角色的权限控制
    C#中实现拖动无边框窗体Form
    C#加密方法汇总
    监控 SQL Server (2005/2008) 的运行状况来自微软TetchNet
    经典SQL语句集锦【转】
    Asp.net+Xml+js实现无线级下拉菜单
    CuteEditor5.0的安装及它与Ajax.net配合无刷新操作数据库!
    sql 提取数字、字母、汉字
    c# 判断远程文件是否存在
    c#采集网页用得几个函数
  • 原文地址:https://www.cnblogs.com/Caoxt/p/10044332.html
Copyright © 2011-2022 走看看