• 10.27 开课一个月零二十三天(设计模式)


    <?php
    
    //面向对象的三大特性
    //封装:
    //目的:为了让类更安全
    //做法:将成员变量变为私有,做一个方法来间接操作成员变量,在方法里面加限制条件
    
    //继承:
    //子类可以继承父类的一切
    //特点:单继承,一个子类只能有一个父类
    
    //多态:
    //当父类引用指向子类实例,由于子类对父类的方法进行了重写,使用父类引用去调用该方法的时候表现出的不同状态
    
    //静态:
    //静态的成员是属于类的
    //普通成员是属于对象的
    
    //抽象类
    //不能被实例化
    
    //接口
    //关键字: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();
    
    
    //设计模式
    //1.单例模式
    //类的计划生育
    //1.让该类在外界无法造对象
    //2.让外界可以造一个对象,做一个静态方法返回对象
    //3.在类里面通过静态变量控制返回对象只能是一个
    
    class Dog
    {
    	static $dx;
    	public $test;
    	
    	private function __construct()
    	{
    		
    	}
    	
    	static function DuiXiang()
    	{
    		//return new Dog();
    		
    		if(empty(self::$dx))
    		{
    			self::$dx = new Dog();
    		}
    		
    		return self::$dx;
    	}
    }
    
    $a = Dog::DuiXiang();
    
    
    $b = Dog::DuiXiang();
    $b->test="hello";
    
    
    var_dump($a);
    
    //工厂模式
    class YunSuan
    {
    	public $a;
    	public $b;
    	
    	function Jia()
    	{
    		return $a+$b;
    	}
    	function Jian()
    	{
    		return $a-$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 = new Cheng();
    $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();
    
    ?>
    
  • 相关阅读:
    网络编程Netty IoT百万长连接优化
    使用 .NET 4.6.2 中的 HttpClientFactory(Use HttpClientFactory from .NET 4.6.2)
    无人值守停车场收费解决方案
    将普通用户加入到串口可以使用/dev/ttyS0或/dev/ttyUSB0的方法 微信公众号
    什么是车规级、车轨级芯片 微信公众号
    三个问题
    使用百度的一些隐私设置
    鼠标滚轮放大图片
    wamp 报错:The configuration file contains a syntax error on line
    PHP 存在不受控制的递归漏洞
  • 原文地址:https://www.cnblogs.com/l5580/p/6025251.html
Copyright © 2020-2023  润新知