zoukankan      html  css  js  c++  java
  • Factory工厂模式复习

    工厂设计模式 用于创建多种类型的多个实例对象

    class Factory{
        //声明静态方法create,根据不同的形状,创建不同的图形类的实例
        public static function create($type,array $size=[]) {
            //检测形状
            switch ($type) {
                //长方形
                case 'rectangle': 
                    return new Rectangle($size[0],$size[1]);
                break;
                //三角形
                case 'triangle':
                    return new Triangle($size[0],$size[1]);
                break;
            }
        }
    }
    //声明长方形类
    class Rectangle{
        private $width;
        private $height;
        public function __construct($width,$height) {
            $this->height = $height;
            $this->width = $width;
        }
        public function area() {
            return $this->width * $this->height;
        }
    }
    //声明三角形类
    class Triangle{
        private $bottom;  //底边
        private $height;  //边长
        public function __construct($bottom,$height){
            $this->bottom = $bottom;
            $this->height = $height;
        }
        //计算三角形面积:  (底 * 高) / 2
        public function area() {
            return ($this->bottom * $this->height)/2;
        }
    }
    
    //使用静态方法来实例化形状类,而不是用传统的new 关键字
    //并根据形状类型参数的不同,来实例化不同的类,生成不同的对象
    $rectangle = Factory::create('rectangle',[10,30]);
    echo '长方形面积是'.$rectangle->area();
    echo '<br>';
    $triangle = Factory::create('triangle',[10,30]);
    echo '三角形面试是'.$triangle->area();
    

      

    每天学习一点,日积月累最终会汇成大海!
  • 相关阅读:
    1.33 (累积互素数)
    1.33 (过滤累积和 求区间内所有素数之和)
    1.32 (更高层次的抽象! 乘法与加法本来就是一回事)
    1.31 (另一种求圆周率的算法)
    1.30 (递归的sum变迭代)
    习题1.29 (积分方法的优化---simpson规则)
    1.3.1 (对过程的抽象)
    SICP习题 1.23(素数查找的去偶数优化)
    SICP习题 1.22(素数)
    pom.xml
  • 原文地址:https://www.cnblogs.com/viczhang/p/11410669.html
Copyright © 2011-2022 走看看