zoukankan      html  css  js  c++  java
  • 面向对象的设计模式

    1、单例模式

    目的:为了控制对象的数量(只能够有一个,相当于类的计划生育)
    做法
    1.将类的构造函数做成私有的
    2.在类里面做了一个公有的函数来造对象
    3.将该函数变为静态的
    4.在函数里面加控制

    例:

    <?php
    class Ren
    {
        public $name;
        
        //成员变量用来存储该对象
        static public $dx;
        
        private function __construct()       私有的 构造函数
        {
            
        }
        
        static function DuiXiang()           把方法变成静态的
        {
            if(empty(self::$dx))             判断  是否是空
            {
                 self::$dx = new Ren();
            }
            
            return self::$dx;
        }
    }
    
    $r = Ren::DuiXiang();
    $r->name = "张三";
                                两个会指向一个函数
    $r1 = Ren::DuiXiang();
    $r1->name = "李四";
    
    var_dump($r);
    ?>

    2、工厂模式

    用来生产对象

    例:

    <?php
    
    abstract class YunSuan
    {
        public $a;
        public $b;
        
        function Suan()
        {
        }
    }
    
    
    class Jia extends YunSuan
    {
        function Suan()
        {
            return $this->a+$this->b;
        }
    }
    
    class Jian extends YunSuan
    {
        function Suan()
        {
            return $this->a-$this->b;
        }
    }
    
    class Cheng extends YunSuan
    {
        function Suan()
        {
            return $this->a*$this->b;
        }
    }
    
    //做一个工厂类
    class GongChang
    {
        static function ShengChan($fuhao)
        {
            switch($fuhao)
            {
                case "+":
                    return new Jia();
                    break;
                case "-":
                    return new Jian();
                    break;
                case "*":
                    return new Cheng();
                    break;
            }
        }
    }
    
    //算加法
    $suan = GongChang::ShengChan("*");
    $suan->a = 10;
    $suan->b = 5;
    echo $suan->Suan();
    
    
    ?>
  • 相关阅读:
    活动安排问题
    CodeForces
    HDU
    HDU
    HihoCoder
    二分签到题--二分入门
    并查集,最小生成树
    spark和 mapreduce的比较
    SparkSQL--数据源Parquet的加载和保存
    SparkSQL -DataFrame与RDD的互转
  • 原文地址:https://www.cnblogs.com/qishuang/p/6183867.html
Copyright © 2011-2022 走看看