自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

2lovecode blog

欲做精金美玉的人品,定从烈火中煅来;思立掀天揭地的事功,须向薄冰上履过。

  • 博客(15)
  • 资源 (2)
  • 收藏
  • 关注

原创 设计模式5.2--严格的单例模式

单例模式:确保一类只有一个实例。普通的单例在clone时,仍然会出现两个单例的情况, 在将__clone()魔术方法改为private后可杜绝此情况。<?phpclass Singleton{ static private $instance = null; private function __construct() {} stati...

2018-02-27 15:07:38 328

原创 php中clone语法使用详解

clone的作用是对象复制,但在使用过程中会遇到一些问题,下面我们针对这些问题探讨一番。语法:$cloneObject = clone $object;1.在php中,我们把一个对象赋值给一个变量,实际上是把这个对象的引用赋给变量,他们指向的是同一个对象。当使用这个变量对对象进行操作时,实际上会影响所有指向这个对象的变量。<?phpclass TestA{...

2018-02-27 12:45:53 680

原创 设计模式11.1--迭代器模式

迭代器模式:提供顺序访问聚合对象中各个元素的方法,而又不暴露其内部的实现 把遍历的任务放到迭代器上,而不是聚合对象上,简化了聚合的接口和实现,让责任各得其所示例中,FirstAggregate是聚合对象, FirstIterator提供了遍历FirstAggregate中各个元素的方法。<?phpinterface MyAggregate{ public fun...

2018-02-24 14:54:19 216

原创 设计模式10.1-模板方法

模版方法:在一个方法中定义一个算法的框架,规定要执行哪些算法,以及算法执行的顺序。并且将一些算法的实现延迟到子类中。这样做的好处是可以在不改变算法结构的基础上,自由地处理一些算法的实现。在本示例中,RunMachineTemplateMethod的run方法,定义了一个算法框架,其中把openPower和display的实现延迟到了子类中。示例中的两个子类是RunComputer...

2018-02-14 19:01:48 240

原创 使用php实现一个简单的key-value数据库

最近在阅读《php核心技术与最佳实践》,前面的部分只是大体了解了下。不过当读到Hash算法与数据库实现这一章时,文中给出了一个使用php实现一个简单的key-value数据库的实例,这引起了我的兴趣。仔细阅读后觉得不过瘾,所以仿照给出的例子自己实践了一遍,来巩固一下学习的内容,同时加深下对数据的理解。1.文中实现了Hash索引,Hash值的冲突,通过分离链表法实现。 2.实现的索引类型是...

2018-02-12 17:39:11 2433

原创 设计模式9.1-外观模式

外观模式:定义了一个统一的接口,用来访问子系统中的一群接口。 外观模式和适配器模式在实现上比较相似,但是其应用的意图有所不同。 适配器模式意图改变一个接口成另一个接口,外观模式意图将一群接口简化在示例中,我们有一个子系统House,其中有一群接口(door light air)。 当我们回家时,要开门,打开灯,打开空调。一个回家动作统一了多个接口。<?phpinterfa...

2018-02-11 10:37:18 209

原创 设计模式8.1-适配器模式

适配器模式:将目标接口,转化为客户期望的接口。在我们的示例中,目标接口是MonkeyInterface, 但是客户(Test类的run方法)期望的是PersonInterface,即客户期望处理的Person。 我们的处理方式是在客户和目标接口中间加一个适配器(MonkeyAdapter),客户使用的是适配器实例,适配器 实例最终会将相应请求委托给它持有的目标对象来处理(MonkeyAd...

2018-02-11 10:36:06 237

原创 php程序员面试必知基础知识

毕业后一直待到现在的公司,一个地方待久了,容易进入舒适区,看不到自己的不足,斗志也会被消磨。所以,最近闲来无事,趁着晚上的工夫出去面试了几家公司。还别说,事实表明,我对php的一些基础知识理解不深入,掌握不牢靠,也可以说是在开发过程中没有意识到去掌握这些知识。 在这里,我就把自己整理的认为一些比较重要的问题分享到这里,希望对各位同学有帮助。如果有新货的话,我会不定时更新的吆~~~php1...

2018-02-09 11:21:09 1399

原创 设计模式7.1-管道模式

管道模式:对于管道模式来说,有3个对象:管道,载荷,过滤器(阶段,阀门均可)。 我们的目的是在管道中对载荷进行一系列的处理。因为可以对过滤器进行动态的添加, 所以对载荷的处理可以变得更加灵活。但同时带来的问题是,在过滤器过多时, 我们很难把握整体的处理逻辑。而且在某一个过滤器对载荷处理后,因为载荷改变, 会造成下一个过滤器中的逻辑出错。 在我们的示例中:管道类是Pipeline,载荷是在实...

2018-02-09 10:52:20 3577

原创 手撸php框架7.1--构建服务定位器之实现

对于服务定位器的实现,我们直接上代码:1.注册服务,注册服务仅仅将定义数组存入defineMap中,不实例化对象。public function registerService($serviceName, $serviceDefinition){ if (!empty($serviceDefinition)) { if ($this->hasServiceIn

2018-02-06 09:40:45 388

原创 手撸php框架7.0--构建服务定位器之简介

在web开发中,服务定位器模式是一种非常贴合的模式。服务定位器模式目的是为了服务提供者和服务使用者的解耦。在我们的框架中,可以把Component类看做是所有服务的基类。我们把web应用作为一个服务定位器,在web应用中,我们可以动态挂载和删除服务。要实现一个服务定位器,我们必须实现下列功能: 属性: 1.保存服务实例的数据结构:$serviceMap[ 'service

2018-02-05 09:05:37 423

原创 遍历目录的非递归实现

在递归计算目录数目,文件数目,目录大小等功能中,我们常用的方式是使用递归来实现。但是,递归实现因为会不断向调用堆栈中存入数据(包括当前执行的状态变量等数据),实际上会大量占用内存空间,同时执行时间也会受到影响。 我们通过一个保存目录路径的队列,可以很优雅地实现非递归的目录遍历,下面我们通过递归统计目录数量的功能给出示例:<?php/*** 非递归方式实现目录数量统计*/$dir

2018-02-03 19:11:16 852

原创 手撸php框架6.1--构建DI容器之实现

1)首先利用php的反射类ReflectionClass,构造类A的反射对象。 2)然后利用反射对象的getConstructor方

2018-02-03 19:00:08 462

原创 手撸php框架6.0--构建DI容器之简介

依赖注入的核心功能就是将所依赖单元的实例化,放到类的外面进行。

2018-02-02 09:34:14 623

原创 手撸php框架5.3--构建Component之行为的实现

1.首先,我们需要一个行为的基类。行为的绑定是相互的,component要持有行为对象,同样行为对象也要持有component的对象,来标识行为依附的对象。所以,component有绑定的动作,行为也需要有绑定的动作。

2018-02-01 09:34:07 510

编程珠玑1和2

c语言经典书籍,值得拥有

2017-03-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除