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

      在平常实用类的时候,往往要进行类功能的扩展,如果直接在里面进行扩展,有可能会对类里面的其他功能产生影响,所以在扩展功能的时候就要重新写类,这就要采用继承的方式,如:

     1 class YunSuan()
     2 {
     3        public $a;
     4        public $b;
     5        function Suan()  //造一个运算的方法
     6        {
     7        }  
     8 }
     9 class Jia extends YunSuan()   //造一个加的子类继承父类
    10 {
    11        function Suan()   //重写Suan的方法
    12        {
    13              return $this->a+$this->b;
    14        }  
    15 }

    工厂模式:生产对象

      如果类里面的方法名使用了很复杂的单词命名,就会导致在使用类时必须将类里面的方法名记住,这会在使用类的时候造成不便。采用工厂模式,通过某些特殊的符号来生产相应的类,就会使我们在使用类的时候很方便,如下面一个工厂模式的类:

     1 class gongchang    //造一个工厂模式的类
     2 {
     3       static function shengchan($ysf)  //定义一个生产对象的方法
     4       {
     5            //判断每个符号,并生产相应的类
     6             case "+":
     7                ruturn new Jia();
     8                break;
     9             case "_":
    10                return new Jian();
    11                break;
    12       }
    13 }

      造好里之后,就可以用相应的符号来生成相应的对象,来实现功能:

    $jia  = gongchang::shengchan("+");
    $jia->a = 5;
    $jia->b = 10;
    $jia->suan();

    单例模式:

    在程序中,如果一个类来造了很多对象的话,就会导致服务器出问题,所以我们要控制生成类的个数,这就要用到单例模式,控制每个类只能造一个对象。

    class DBDA
    {
          public static $dx;    //存储对象
          //将构造函数变成私有,避免外界访问
          private function __contruct()
          {
          }
          //生成对象
          static function shengcheng()
          {
                if(empty(self::$dx))
                {
                       $dx = new DBDA();
                }
                return self::$dx;
          }
    }
  • 相关阅读:
    winform combobox SelectedText值为空
    【转】C#、面向对象、设计模式学习
    oracle查询分区表中的数据
    ORA-14402:更新分区关键字列将导致分区更改
    winform列标题高度无法改变
    【转】c#中@的3种作用
    winform 弹出的form显示在最前端
    winform datagridview数据显示不全
    【转】如何把CD上的音乐拷贝到电脑上
    开关WIFI脚本
  • 原文地址:https://www.cnblogs.com/zk0533/p/5662812.html
Copyright © 2011-2022 走看看