php-设计模式
面向对象的三大特性
1.封装: 目的:为了让类更安全 做法:将成员变量变为私有,做一个方法来间接操作成员变量,在方法里面加限制条件 2.继承: 子类可以继承父类的一切 特点:单继承,一个子类只能有一个父类 3.多态: 当父类引用指向子类实例,由于子类对父类的方法进行了重写,使用父类引用去调用该方法的时候表现出的不同状态
静态:
静态的成员是属于类的
普通成员是属于对象的
抽象类
不能被实例化
接口
关键字: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";
自动加载类的方法
1.所有的类文件要放在同一个目录下
2.所有类文件的命名规则一致
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();
?>