zoukankan      html  css  js  c++  java
  • 设计模式

    简介

    模式定义

    在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象。工厂方法模式让类的实例化延迟到子类中。

    模式特点

    工厂方法模式包含四个角色:

    • Product:抽象产品
    • ConcreteProduct:具体产品
    • Factory:抽象工厂
    • ConcreteFactory:具体工厂

    这里写图片描述

    优缺点

    • 克服了简单工厂的缺点,符合开放封闭原则。添加新产品时只需要添加具体的工厂类,而不需修改抽象工厂
    • 添加新对象时,需要同时增加对象类和工厂类
    • 用法复杂,抽象工厂在实现时可能需要使用反射技术

    实例化的类可能会新增类型时,通常使用工厂模式作为创建对象的标准方式。

    PHP 代码示例

    <?php
    
    abstract class AbstractButtonFactory
    {
        abstract public function getInstance();
    }
    
    class CircleButtonFactory extends AbstractButtonFactory
    {
        public function getInstance()
        {
            return new CircleButton();
        }
    }
    
    class RectButtonFactory extends AbstractButtonFactory
    {
        public function getInstance()
        {
            return new RectButton();
        }
    }
    
    abstract class AbstractButton
    {
        abstract public function click();
    }
    
    class CircleButton extends AbstractButton
    {
        public function click()
        {
            echo "I'm circle button";
        }
    }
    
    class RectButton extends AbstractButton
    {
        public function click()
        {
            echo "I'm rectangle button";
        }
    }
    
    $cbf = new CircleButtonFactory();
    $circleButton = $cbf->getInstance();
    $circleButton->click();
  • 相关阅读:
    2016-2017-2 201671010101Java
    2016-2017-2 201671010101Java
    2016-2017-2java 20167101010101
    2016-2017-2java20167101010101
    201671010101 2016-2017-2《java程序设计》
    201671010101 2016-2017-2《java程序设计》
    201671010101 2016-2017-2《java程序设计》
    201671010101 2016-2017 -2《java程序设计》
    201671010101 2016-2017-2《java程序设计》
    常见的DOS命令
  • 原文地址:https://www.cnblogs.com/kika/p/10851576.html
Copyright © 2011-2022 走看看