• 初识设计模式(1)---单例、工厂、注册树


    1、单例模式:单例模式是一种常用的软件设计模式。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

    小示例:

     1 <?php
     2 class DataBase
     3 {
     4     static $instance = null;
     5 
     6     private function __construct(){//构造方法私有,使外部不能示例
     7     }
     8     public static function getInstace(){//开放一个接口,让外界获取唯一的实例;
     9         if (!self::$instance instanceof self) {
    10             self::$instance = new self;
    11         }
    12         return self::$instance;
    13     }
    14 
    15 }
    16 ?>

    2、工厂模式:是用工厂方法来代替 new 操作,达到封装,以减少修改量。

     1 //工厂模式示例
     2 //在工厂类里面创建new database类的方法,并返回实例化的对象;
     3 <?php
     4 class Factory{
     5     static function createDb(){
     6         $db = new DataBase();
     7         return $db;
     8     }
     9 {
    10 ?>
    11 
    12 //使用时直接调用,工厂类的对应方法获得需要类的实例,这样的话后期如果需要修改相应类的名称等,只需修改工厂类中对应方法的new操作;
    13 <?php
    14 $db = Factory::createDb();
    15 ?>

    3、注册树模式,将实例对象放入一个全局数组中,以供直接调用。

    如工厂模式中的实例对象,通过注册模式注册在注册树上,使用时直接从注册树上调用

     1 <?php
     2 //注册树模式简单示例
     3 class register{
     4     protected static $objects = array();
     5     //注册到注册树
     6     public function set($function,$object){
     7         self::$objects[$function] = $object;
     8 }
     9     //从注册树调用
    10     public function get($function){
    11         return  self::objects[$function];
    12     }
    13 }
    14 ?>    
  • 相关阅读:
    Distributed Transaction Coordinator 服务因 3221229584 (0xC0001010) 服务性错误而停止 解决办法
    串行通信
    Sun下山后的IT格局 Oracle能抗衡IBM吗?
    串行通信比并行通信的速度更高
    ERP渠道商怨气冲天 自比“农民工”没有明天
    销售渠道
    甲骨文中国开始整合SUN中国 SUN市场部遭洗牌
    PHP 事件机制(2)
    (备忘)
    jquery键盘事件的更改
  • 原文地址:https://www.cnblogs.com/lilili/p/5146846.html
Copyright © 2020-2023  润新知