zoukankan      html  css  js  c++  java
  • 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();

    ?>

  • 相关阅读:
    中南大学ACM12月月赛第二场热身赛解题报告
    中南大学ACM12月月赛第二场热身赛在本周日(2011年11月20日)举行
    IPv4 and IPv6
    Java and IPV6
    IPv6 and Java
    poj3385
    poj3390
    poj3226
    poj3767
    poj3497
  • 原文地址:https://www.cnblogs.com/wells33373/p/6007337.html
Copyright © 2011-2022 走看看