zoukankan      html  css  js  c++  java
  • 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();
    
    ?>
    
  • 相关阅读:
    MySQL-子查询,派生表,通用表达式
    MySQL-插入数据(INSERT)
    IDEA中如何使用debug调试项目 一步一步详细教程
    Java相对路径/绝对路径总结
    jsp九个内置对象、四个域对象及Servlet的三大域对象
    浅析MVC模式与三层架构的区别
    三层架构详解
    Java集合中List,Set以及Map等集合体系详解
    POJ3233 [C
    HDU 2829 [Lawrence] DP斜率优化
  • 原文地址:https://www.cnblogs.com/l5580/p/6025251.html
Copyright © 2011-2022 走看看