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();
  • 相关阅读:
    ASP.NET 防盗链的实现[HttpHandler]
    html打印表格每页都有的表头和打印分页
    spring是怎样管理mybatis的及注入mybatis mapper bean的
    浅谈Log4j和Log4j2的区别
    git tag — 标签相关操作
    java cocurrent包
    线程实现异步
    使用Shell脚本查找程序对应的进程ID,并杀死进程
    shell脚本监测文件变化
    spring boot的几种配置类型
  • 原文地址:https://www.cnblogs.com/kika/p/10851576.html
Copyright © 2011-2022 走看看