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();
  • 相关阅读:
    6个变态的C语言Hello World程序
    Thread和Runnable差别
    HTML5游戏开发技术基础整理
    Kruskal算法
    PHP手机获取6为不反复验证码
    怎样推断手机用户是移动,电信,联通?
    SQL Server 2012 sa 用户登录 18456 错误
    Phonegap(Cordova)3.4 + Android 环境搭建
    LCA在线算法ST算法
    Swift学习笔记八:枚举
  • 原文地址:https://www.cnblogs.com/kika/p/10851576.html
Copyright © 2011-2022 走看看