zoukankan      html  css  js  c++  java
  • 工厂方法模式

    <?php
    /**
     * 操作抽象类
     */
    abstract class op {
        public $op_num_1;
        public $op_num_2;
        abstract function get_result();    
    } 
    /**
     * 执行具体运算的加法类
     */
    class op_add extends op {
        public function get_result() {
            echo $this->op_num_1 + $this->op_num_2,chr(10);
        }
    }
    /**
     * 执行具体运算的减法类
     */
    class op_subtract extends op {
        public function get_result() {
            echo $this->op_num_1 - $this->op_num_2,chr(10);
        }
    }
    /**
     * 创建执行具体运算的对象的抽象工厂类
     */
    abstract class op_factory {
        abstract function create_op();
    }
    /**
     * 创建执行加法运算的对象的类
     */
    class op_add_factory extends op_factory {
        public function create_op() {
            return new op_add();
        }
    }
    /**
     * 创建执行减法运算的对象的类
     */
    class op_subtract_factory extends op_factory {
        public function create_op() {
            return new op_subtract();
        }
    }
    //通过加法工厂创建一个执行加法运算的对象
    $op_add = new op_add_factory();
    $op = $op_add->create_op();
    //执行运算
    $op->op_num_1 = 100;
    $op->op_num_2 = 50;
    $op->get_result();

    /*
    简单工厂模式中对象的创建逻辑在工厂类内部。如果新增某项功能, 需要添加功能实现类,修改工厂类内部的对象创建逻辑。这样违背了面向对象的“开放-封闭原则”。
    工厂方法模式,将对象的创建逻辑延迟到工厂类的子类中。如果新增某项功能,它只需添加功能实现类,添加工厂方法子类用于创建新增的个功能实现类的对象。
    但是具体调用哪个工厂子类来创建具体功能对象的逻辑,貌似交还给了客户端。
    */

    工厂方法模式(factory method): 定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

  • 相关阅读:
    DOM操作:
    定时器
    7.thinkphp框架控制器
    1.thinkphp框架介绍
    4.thinkphp框架url访问
    6.thinkphp框架路由
    2.thinkphpk框架基础
    5.thinkphp框架配置文件
    3.thinkphp框架入口文件
    8.thinkphp框架数据库
  • 原文地址:https://www.cnblogs.com/buexplain/p/4629933.html
Copyright © 2011-2022 走看看