`
文章列表
  数据库类几乎是每个PHP框架必不可少的组件之一,Yii的数据库核心主要包含两类,一类是管理数据库连接的CDbConnection及相关类,另一类是ORM(Object Relation Model),即管理数据库表记录的CActiveRecord及相关类。 首先我将介绍和分析数据库连接管理类CDbConnection,CDbConnect作为CApplication的核心组件,在应用初始化时会自动进行初始化,对于使用者来说,需要在配置文件中将配置CDbConnection的初始化配置:   //protected/config/main.php: 'components'=> ...
装饰者模式的含义是将要装饰的对象作为一个成员放在装饰者的内部,通过装饰者的方法来调用要装饰的对象的方法,通常的wrapper也是这种形式。组合模式和装饰者模式的区别是,组合模式组合的是一类对象,而装饰者是对某一个对象进行包装。
关于适配器模式的定义:适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。来自百度百科:http://baike.baidu.com/view/3371585.htm适配器模式的概念也很好理解,为了适应不同的场合将类或者接口改装成适用于当前环境的形式,比如某个接口的输入是json,但是另外一个环境是xml的,可能就需要重新包装一个接口将其由json转换成xml来实现。
关于门面模式的定义:门面模式为了系统提供一个 统一的高层接口供外部客户使用。也是提供一个更高的层次的接口,使得子系统更容易使用。来自百度百科http://baike.baidu.com/view/4949561.htm门面模式有两个作用:一是简化类的接口;而是消除类与使用它的客户代码之间的耦合。对于实现,javascript和其他语言并无不同,概念也很好理解,这里就不赘述了。
关于组合模式的定义:组合模式(Composite Pattern)有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。来自百度百科:http://baike.baidu.com/view/3591789.htm其实从面向对象之五之后,与javascript本身关系不是很大,更重要的是设计模式的一些概念,只要了解javascript面向对象的一般知识,掌握设计模式的含义,代码本身并不是很难。这里简单说一下组合模式,其实组合模式就是将一系列相似或相近的对象组合在一个大的对象,由这 ...
关于桥接模式的定义:在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。来自百度百科http://baike.baidu.com/view/4520638.htm这里不像粘大段的js代码来解释桥接模式,说说我的理解吧,桥接模式主要有两方面的功能:1.桥接模式可以拆分耦合度较高的代码,将其变为耦合度较低的代码,然后再使用一个“桥”式代码将其组合,实现原有的功能;这样的好处是松散的代码可以复用,也可以进行单元测试,同时能不改变原有的调用 ...
工厂模式和单例模式(http://blog.sina.com.cn/s/blog_550ffb0b0100nv4p.html)应该是设计模式中应用最多的模式了,工厂模式的定义:提供创建对象的接口(来自百度百科:http://baike.baidu.com/view/1306799.htm),意思就是根据领导(调用者)的指示(参数),生产相应的产品(对象)。1.简单工厂模式    简单工厂也就是按照上面的定义,根据不同的参数返回不同的结果。    //定义通用的对象类    var car = function(){};    //定义对象,对象内容省略,对象必须实现car定义的成员函数(yy一下 ...
1.链式调用:jquery可能是目前大家最常用到的js框架了,也习惯了如下的调用方式:$('.someclass').show().css('xxx','xxxx').click(function(){}).xxx……这种调用方式就叫做链式调用,也就是说在调用一个方法之后,可以使用方法的返回值来继续进行方法调用。2.如何实现链式调用:了解了什么是链式调用,我们再来看如何实现链式调用,从1中所述我们应该知道链式调用的关键在于方法的返回值,只要方法的返回值都是调用该方法的对象,那么,我们就可以实现链式调用了,我们仿照jquery,使用$作为对象的选择器:(function(){   functio ...
1.单例模式概述源自百度百科对于单例模式的定义:单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。在javascript的世界里,其实没有严格 ...
1.关于继承:百度百科对继承的解释是:继承是指一个对象直接使用另一对象的属性和方法。(话说百科对于计算机概念的继承的解释也太简略了)继承的好处,优点学过面向对象的同学都知道,就不赘述了。javascript中的继承有三种(不同的书上对这三中的名称翻译都不一样,我按照我的理解来命名吧):a.构造函数继承(类式继承,组合继承,伪经典继承)b.原型继承c.原型赋值(遍历)继承(寄生式继承)2.构造函数继承所谓的构造函数继承,就是通过创建一个新对象,调用父类构造函数实现的一种继承;(知识点:函数对象的原型会有一个属性叫constructor, constructor实际指向的是这个函数)function ...
序:    刚接触javascript的时候,觉得这语言有点儿摸不着门道,感觉这玩意儿太难学了,没什么规范,没什么像样的手册,而且还跟html,dom,css打交道,更觉得一团糟,代码可读性也很差,面向过程的勉强能看懂,看面向对象的代码简直就是杯具,各种括号啊,后来了解ajax,了解了jquery,知道了很多网页特效都是用javascript写的,才慢慢有了好感,来了bd以后写javascript和php一半一半才渐渐发现javascript的强大和灵活,看了《javascript权威指南》和《javascript高级编程》之后发现,正是因为她的灵活,铸就了她的伟大,接下来我会把学习javasc ...
      《The Definitive Guide to Yii》描述了视图的概念:“视图是一个包含了主要的用户交互元素的PHP脚本.他可以包含PHP语句”,不同于很多类似的框架,Yii并没有使用smarty作为模板引擎,而是直接使用原生的PHP脚本作为模板,笔者认为至少有以下两点好处:   (1) 门槛低,易于使用,不需要理解和记忆smarty的模板语言语法   (2) 减少了模板引擎解析的过程,直接include,结合opcode缓存,效率可能会更高 当然也有缺点:   (1) 没有smarty的前端过滤功能,前后端分离开发也有一定的门槛(前端工程师需要学习PHP语法,尤其是字 ...
原文地址:http://www.itivy.com/ivy/archive/2011/8/13/the-architecture-of-youku.html         记得以前给大家介绍过视频网站龙头老大YouTube的技术架构,相信大家看了都会有不少的感触,互联网就是这么一个神奇的东西。今天我突然想到,优酷网在国内也算是视频网站的老大了,不知道他的架构相对于YouTube是怎么样的,于是带着这个好奇心去网上找了优酷网架构的各方面资料,虽然谈得没有YouTube那么详细,但多少还是挖掘了一点,现在总结一下,希望对喜欢架构的朋友有所帮助。 一、网站基本数据概览 据2010 ...
原文地址:http://www.itivy.com/ivy/archive/2011/3/6/634350416046298451.html     这几天一直在关注和学习一些大型网站的架构,希望有一天自己也能设计一个高并发、高容错的系统并能应用在实践上。今天在网上找架构相关的资料时,看到一个被和谐的视频网站YouTube的架构分析,看了以后觉得自己又向架构走近了一步,于是赶快拿出来与大家一起分享。 YouTube发展迅速,每天超过1亿的视频点击量,但只有很少人在维护站点和确保伸缩性。这点和PlentyOfFish类似,少数人维护庞大系统。是什么原因呢?放心绝对不是靠人品,也不是靠寂 ...
    Yii控制器基本的执行单位为action,通常情况下,在Controller类中定义一个actionMe的函数,那么当访问me这个action时(参考Yii分析5:路由管理类UrlManager和Yii分析7:runController的执行),会自动执行actionMe方法。在实际的项目中,如果Controller有多个action,那么如果把所有的action处理逻辑都写在Controller中,那么这个Controller类会异常的大,不利于后期维护,我们可以通过覆盖actions方法,配置action map把不通action分散到各个类中去处理: public func ...
Global site tag (gtag.js) - Google Analytics