zoukankan      html  css  js  c++  java
  • 面向对象设计模式中的单例模式和工厂模式


    //设计模式(不同的情况下生成不同的类)
    //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();//因为返回的是自己,所以$a 与$b 相同
    $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();

  • 相关阅读:
    WPF 文本滚动效果 渐变效果
    Unity3D 学习——入门资料整理
    命名管道 问题:信号灯超时问题
    Nginx 遇到的问题
    Nginx的安装配置 例子
    03 Spring的父子容器
    02 浅析Spring的AOP(面向切面编程)
    03 JVM的垃圾回收机制
    02 Java类的加载机制
    01 深入理解JVM的内存区域
  • 原文地址:https://www.cnblogs.com/zsczsc/p/6408231.html
Copyright © 2011-2022 走看看