当前位置: 首页 > news >正文

网上做兼职网站公司网站怎么弄

网上做兼职网站,公司网站怎么弄,珠海发布最新通告,山东省住房和城乡建设厅官网查询2019独角兽企业重金招聘Python工程师标准>>> php模式设计之 注册树模式 在前两篇单例模式和工厂模式后,终于迎来了最后一个基础的设计模式--注册树模式。 什么是注册树模式? 注册树模式当然也叫注册模式,注册器模式。之所以我在这…

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

php模式设计之 注册树模式

  在前两篇单例模式和工厂模式后,终于迎来了最后一个基础的设计模式--注册树模式。

  什么是注册树模式?

  注册树模式当然也叫注册模式,注册器模式。之所以我在这里矫情一下它的名称,是因为我感觉注册树这个名称更容易让人理解。像前两篇一样,我们这篇依旧是从名字入手。注册树模式通过将对象实例注册到一棵全局的对象树上,需要的时候从对象树上采摘的模式设计方法。   这让我想起了小时候买糖葫芦,卖糖葫芦的将糖葫芦插在一个大的杆子上,人们买的时候就取下来。不同的是,注册树模式摘下来还会有,能摘很多次,糖葫芦摘一次就没了。。。

  为什么要采用注册树模式?

  单例模式解决的是如何在整个项目中创建唯一对象实例的问题,工厂模式解决的是如何不通过new建立实例对象的方法。 那么注册树模式想解决什么问题呢? 在考虑这个问题前,我们还是有必要考虑下前两种模式目前面临的局限。  首先,单例模式创建唯一对象的过程本身还有一种判断,即判断对象是否存在。存在则返回对象,不存在则创建对象并返回。 每次创建实例对象都要存在这么一层判断。 工厂模式更多考虑的是扩展维护的问题。 总的来说,单例模式和工厂模式可以产生更加合理的对象。怎么方便调用这些对象呢?而且在项目内如此建立的对象好像散兵游勇一样,不便统筹管理安排啊。因而,注册树模式应运而生。不管你是通过单例模式还是工厂模式还是二者结合生成的对象,都统统给我“插到”注册树上。我用某个对象的时候,直接从注册树上取一下就好。这和我们使用全局变量一样的方便实用。 而且注册树模式还为其他模式提供了一种非常好的想法。

 

  如何实现注册树?

  通过上述的描述,我们似乎很容易就找到了解决方法。首先我们需要一个作为注册树的类,这毋庸置疑。所有的对象“插入”到注册树上。这个注册树应该由一个静态变量来充当。而且这个注册树应该是一个二维数组。这个类应该有一个插入对象实例的方法(set()),当让相对应的就应该有一个撤销对象实例的方法(_unset())。当然最重要的是还需要有一个读取对象的方法(get())。拥有这些,我们就可以愉快地完成注册树模式啦~~~

  下面让三种模式做个小小的结合。单纯创建一个实例对象远远没有这么复杂,但运用于大型项目的话,便利性便不言而喻了。

<?php
//创建单例
class Single{public $hash;static protected $ins=null;final protected function __construct(){$this->hash=rand(1,9999);}static public function getInstance(){if (self::$ins instanceof self) {return self::$ins;}self::$ins=new self();return self::$ins;} 
}//工厂模式
class RandFactory{public static function factory(){return Single::getInstance();}
}//注册树
class Register{protected static $objects;public static function set($alias,$object){self::$objects[$alias]=$object;}public static function get($alias){return self::$objects[$alias];}public static function _unset($alias){unset(self::$objects[$alias]);}
}Register::set('rand',RandFactory::factory());$object=Register::get('rand');print_r($object);

  

       至此,三种模式设计介绍完毕。各种模式设计本身就会相辅相成,往后介绍其他模式的时候,多多少少会用到一种或多种其他设计模式。

  一种模式不懂不要紧,相信编程的深入,定会产生恍然大悟的惊喜感 ,愿诸君与我共进步。

转载于:https://my.oschina.net/u/2364788/blog/1475573

http://www.lbrq.cn/news/2530099.html

相关文章:

  • 只做美食类目产品的网站关键词搜索热度
  • 只做汽车的网站社群推广平台
  • 沈阳网站建设公司千锋教育培训机构怎么样
  • 优酷网站怎么做的怎么让网站被百度收录
  • 做简单的网站首页一个自己的网站
  • 专业做家居的网站有哪些网络营销的六大功能
  • 做网站投诉要钱吗网络营销的成功案例分析
  • ps网站设计怎么做域名注册查询
  • 腾讯云服务器搭建网站产品网络推广的方法有哪些
  • 做网站的人怎么联系怎么注册自己的网址
  • 做装修网站推荐客户靠谱吗如何提升关键词的自然排名
  • 新沂做网站优化seo
  • 官方网站下载微博网络销售靠谱吗
  • 自己怎么在手机上设计装修广州网站seo推广
  • 电商网站制作项目描述百度seo工作室
  • 外包公司做网站seo效果检测步骤
  • 恩施网站设计百度新闻网
  • 广州哪家网站建设好青岛官网seo公司
  • 莱芜新闻网最新消息短视频seo是什么
  • 滨州网站建设公司搜索平台
  • 永定门网站建设中国免费网站服务器主机域名
  • 阿里云做网站多少钱中央人民政府
  • 做网站哪种编程语言好推广网站制作
  • 怎么制作个人门户网站百度推广最近怎么了
  • 做服装最好的网站建设怎么做神马搜索排名seo
  • windows wordpress 轻量级seo推广主要做什么的
  • 移动互联网时代的信息安全与防护超星网课答案优化英文
  • 论文网站建设格式中国培训网是国家公认的吗
  • 西峡网站建设线上宣传方式有哪些
  • wordpress后台用户名怎么做seo关键词优化
  • 如何在 Ubuntu 24.04 或 22.04 LTS Linux 上安装 DaVinci Resolve
  • 安全月报 | 傲盾DDoS攻击防御2025年7月简报
  • Kubernetes 应用部署实战:为什么需要 Kubernetes?
  • Android Emoji 全面解析:从使用到自定义
  • git本地仓库,工作区和暂存区的知识
  • 算法训练营day36 动态规划④ 1049. 最后一块石头的重量 II、494. 目标和、474.一和零