zoukankan      html  css  js  c++  java
  • 自动加载类,设计模式:单例模式,工厂模式。

    //接口
    //关键字:interface
    //加载类:
    第一种方法:
    include("./Ren.class.php");    
    include "./Ren.class.php";
    //第二种方法:
    require("./Ren.class.php");
    require "./Ren.class.php";
    //第三种方法:
    require_once("./Ren.class.php");
    require_once "./Ren.class.php";
    
    //自动加载类的方法
    //所有的类文件要放在同一个目录下
    //所有类文件的命名规则一致
    
    
    function __autoload($classname)   //自动加载(类名)
    {
        require $classname.".class.php";
    }
    
    $r = new Ren();
    
    echo $r->say();//输出Ren.class.php加载类表里的say类名。
        
    //设计模式
    //1.单例模式
    //类的计划生育
    //1.让该类在外界无法造对象
    //2.让外界可以造一个对象,做一个静态方法返回对象
    //3.在类里面通过静态变量控制返回对象只能是一个
    
    class Dog 
    {
        static $dx;   //存储对象
        public $test;
        
        private function __construct()
        {
            
        }
        
        static function DuiXiang()
        {
            if(empty(self::$dx))   //静态关键字self::
            {
                self::$dx = new Dog();//这句话他只执行一次
            }
            
            return self::$dx;   //返回dx
        }
        
        
    }
    
    
    $a = Dog::DuiXiang();
    
    $b = Dog::DuiXiang();
    $b->test="你好";
    
    var_dump($a);
    
    
    
    
    //工厂模式
    /*class YunSuan
    {
        public $a;
        public $b;
        
        function Jian()
        {
            return $this->a+$this->b;
        }
        function jian()
        {
            return $this->a-$this->b;
        }
    
    }
    */  //正常的一个运算类
    
    abstract class YuanSuan
    {
        public $a;
        public $b;
        
        function Suan()
        {
        }
    
    }
    
    class Jia extends YuanSuan
    {
        function Suan()
        {
        return $this->a+$this->b;
        }
    }
    
    class Jian extends YuanSuan
    {
        function Suan()
        {
            return $this->a-$this->b;
        }
    }
    
    class Cheng extends YuanSuan
    {
        function Suan()
        {
            return $this->a*$this->b;
        }
    }
    /*$j->a=10;
    $j->b=5;
    $j = new Cheng();
    echo $j->Suan();*/
    
    class GongChang
    {
        static function ShengChan($f)
        {
            switch($f)  //类多的代码代表
            {
                case "+":
                        return new Jia();
                        break;
                case "-":
                        return new Jian();
                        break;
                case "*":
                        return new Cheng();
                        break;
            }
        }
    
    }
    
    
    $r = GongChang::ShengChan("-");
    $r->a=10;
    $r->b=5;
    echo $r->Suan();
  • 相关阅读:
    互联网协议入门详解(转)
    文件流结尾的EOF详解
    数字签名是什么?
    SSL/TLS协议运行机制的概述(转)
    图解SSL/TLS协议(转)
    RSA算法原理(转)
    HTML代码简写法:Emmet和Haml(转)
    HTML Email 编写指南(转)
    PHP CodeBase: 判断用户是否手机访问
    Spring Data JPA之Derived query
  • 原文地址:https://www.cnblogs.com/zc290987034/p/6004532.html
Copyright © 2011-2022 走看看