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();
  • 相关阅读:
    循环链表问题
    非常有用的编程学习网站
    我的单例模式(C++)
    C# xml解析
    设计模式趣解
    简单工厂(C++)
    贝塞尔曲线 原理
    C++ 1.#QNAN0;1.#QNAN0
    [NOI2018]屠龙勇士 excrt
    [NOI.AC#30]candy 贪心
  • 原文地址:https://www.cnblogs.com/kika/p/10851576.html
Copyright © 2011-2022 走看看