zoukankan      html  css  js  c++  java
  • 设计模式 单例模式与工厂模式

    设计模式 种类三十几种
    普通方法 属于对象 通过对象去调用
    静态方法 属于类 通过类名调用
    单例模式不常用
    <?PHP
    //单例模式:只造一个对象,并且禁止其他程序创建该类的对象
    class Ren
    {
    public $name;
    private static $dx; //看$dx里面是有值 来确定唯一
    private function __construct ()
    {

    }
    public static function DuiXiang() //不能被实例化,用静态
    {
    if(empty(self::$dx))
    {self::$dx = new Ren():} //$dx 判断是否为空
    return self::$dx;
    }
    }

    $r = Ren::DuiXiang();
    $r->name = 'aa';

    $r1 = Ren::DuiXiang();


    //工厂模式:通过一个类,给不同的参数,生产不同的对象
    普通方法 通过扩展方法来实现 但不安全:可以修改类
    继承方法 可以不通过原修改类 安全性高 可以单独修改
    //普通方法
    Class YunSuan
    {
    public $a;
    public $b;

    function jia();
    {
    return $this->a+$this->b;
    }
    function jian();
    {
    return $this->a-$this->b;
    }
    }
    //继承方法 分类
    Class YunSuan
    {

    public $a;
    public $b;

    function Suan()
    {
    echo"对两个数进行运算";
    }
    }
    Class Jia extends YunSuan;
    {
    function Suan()
    {
    return $this->a+$this->b;
    }
    }

    Class Jian extends YunSuan;
    {
    function Suan()
    {
    return $this->a-$this->b;
    }
    }

    //工厂类

    Class GongChang
    {
    static function ChanPin($name) //给一个参数,返回对象.
    { 静态方法 简单
    switch($name)
    {
    case"+"
    return new Jia();
    break;
    case"-"
    return new Jian();
    break;

    }
    }
    }
    $a = GongChang::ChanPin("+");

  • 相关阅读:
    守卫者的挑战
    黑魔法师之门
    noip2015 普及组
    noip2015 提高组day1、day2
    40026118素数的个数
    高精度模板
    经典背包系列问题
    修篱笆
    [LintCode] Linked List Cycle
    [LintCode] Merge Two Sorted Lists
  • 原文地址:https://www.cnblogs.com/yuyu99/p/6406263.html
Copyright © 2011-2022 走看看