2016-10-13 曹强
php
简介 俗话说,“PHP是世界上最好的语言”,因为PHP什么都能干。但是在PHP编程中,你是否会遇到这样的困惑:明明是相同的需求,但是之前写的代码却并不能重用,稍微修改不满足需求,大改又会让页面变样。 是的,由于PHP什么都能干,但是高度灵活性降低了代码的结构性。虽然可以利用三方框架来解决问题,但问题的根本在于缺乏设计模式。 本系列文章将由浅入深的介绍各种设计模式。 面向对象编程 面向对象编程,Object-Oriented Programming(OOP)作为最基本的设计模式并不是什么新鲜的话题,但是大部分新手的PHP编程都是在写流水账,各种拼接字符串,所以这里还是要提一下。 Object-Oriented Pro 继续阅读 »
2016-10-13 曹强
php
简介 在[PHP设计模式(七):设计模式分类][2]中我们提到过结构设计模式(Structural patterns),结构设计模式专注于设计对象(Object)和实例(Instance)的构建、组合过程。 结构设计模式包括下面七种设计模式: 适配器(Adapter) 桥接(Bridge) 合成(Composite) 装饰(Decorator) 外部(Facade) 轻量(Flyweight) 代理(Proxy) 请无视拗口的中文翻译。结构设计模式着重于低耦合、高复用、高可维护性、高拓展性的设计原则。 适配器模式 适配器模式是一种利用适配器将现有的实现,适配到已有接口的设计模式,最常见的例子就是变压器,将已 继续阅读 »
2016-10-13 曹强
php
简介 对于编程来说,对事物的抽象是一个老生常谈的话题,抽象问题更利于面向对象编程以及程序设计模式。 和C/C++,Java,Python等语言一样,PHP也支持面向对象,但是又有略微区别,如PHP支持在接口中定义常量,但是不支持抽象变量。 抽象/Abstraction 对事物的抽象是指,区别两个不同事物之间的本质特征,这两个事物应该在某个视角上有明确的区分界限。 如,鲸鱼和鲤鱼,这两个事物在动物的视角上,有明确的区分界限,属于不同的动物;但是在水生动物的视角上,他们属于同一种动物的抽象。 合理的对问题进行抽象,构造模型,将更容易通过编程来解决问题。 记住:抽象是编程解决问题的基础,越复杂的问题,越需要一开始就对问 继续阅读 »
2016-10-13 曹强
php
原文地址:[PHP设计模式(三):封装][1] 简介 面向对象编程中,一切都是对象,对一个对象的封装,也成了面向对象编程中必不可少的部分。 和C/C++,Java,Python等语言一样,PHP也支持封装。 封装/Encapsulation 对事物的封装是指,将事物进行抽象后,提供抽象概念的实现的具体方法。 听起来很拗口,还是举鲸鱼的例子。 对于鲸鱼来说,需要吃东西这个行为,吃本身是一个抽象的概念,因为具体到怎么吃,是咀嚼和消化的过程,甚至如何咀嚼和消化也是不可见的。对外部而言,可见的只是吃这一个接口,如何吃、怎么吃,是被封装在了鲸鱼的实现中。甚至可以说,消化系统,被封装到了鲸鱼这个对象中,对外部不可见,仅仅鲸鱼自 继续阅读 »
2016-10-13 曹强
php
简介 在[PHP设计模式(二):抽象类和接口][2]以及[PHP设计模式(三):封装][3]中,我们已经见过继承,也就是extends关键字。 和C/C++,Java,Python等语言一样,PHP也支持继承,而且和其他语言没有什么区别。 继承/Inheritance 还是用动物、鲸鱼和鲤鱼来举例: abstract class Animal { protected $name; protected function chew($food) { echo $this-name . " is chewing " . $food . ".\n"; } protected function diges 继续阅读 »
2016-10-13 曹强
php
简介 根据目的和范围,设计模式可以分为五类。按照目的分为:创建设计模式,结构设计模式,以及行为设计模式。按照范围分为:类的设计模式,以及对象设计模式。下面分别介绍 。 创建设计模式 创建设计模式(Creational patterns),用于创建对象时的设计模式。更具体一点,初始化对象流程的设计模式。当程序日益复杂时,需要更加灵活地创建对象,同时减少创建时的依赖。而创建设计模式就是解决此问题的一类设计模式。 结构设计模式 结构设计模式(Structural patterns),用于继承和接口时的设计模式。结构设计模式用于新类的函数方法设计,减少不必要的类定义,减少代码的冗余。 行为设计模式 行为设计模式(Behavio 继续阅读 »
2016-10-13 曹强
php
简介 在[PHP设计模式(七):设计模式分类][2]中我们提到过创建设计模式(Creation patterns),创建设计模式专注于设计对象(Object)和实例(Instance)的创建过程。 创建设计模式包括下面五种设计模式: 抽象工厂设计模式(Abstract Factory) 生成器模式(Builder) 工厂设计模式(Factory Method) 原型设计模式(Prototype Method) 单例设计模式(Singleton) 当程序逐渐扩展的时候,需要更多的新对象,新对象的创建不应该依赖于创建者,换句话说,新对象的创建过程,不应该依赖调用创建函数的对象。为了减少冗余,增加拓展性,工厂模式就是一种 继续阅读 »
2016-10-13 曹强
php
简介 在[PHP设计模式(八):工厂模式][2]中我们介绍了创建设计模式(Creation patterns)中的工厂模式,下面我们将介绍另一种原型设计模式(Prototype Method)。 在PHP中,原型设计模式依靠cloning复制对象来实现。通过cloning构造的对象,将大量节省新对象的构造时间。 何时使用原型设计模式? 简单来说,当你希望根据已有的对象来创建新对象时。 为什么会有这种需求?想象一下,你在做细胞分裂的项目,每一个细胞都是一个对象,现在你有一个细胞类,每一个新的细胞都是由这个类生成的,不同的细胞只是内部的状态参数不同。 当分裂到第N代的时候,已经和初代大不一样了,你是愿意使用第N代的副本 继续阅读 »
2014-06-25 summer
简介 Zopim是一款国外最具知名度的一个免费的在线客服软件,您可以免费使用,也可以购买他们的付费套餐,付费的有更好的服务。 注册 Zopim的注册非常简单,直接打开zopim的网站“https://www.zopim.com/?lang=zh-cn”,把页面拉到最下面,直接点击“SIGN UP FREE”按钮开始创建账户,通过邮箱验证后,系统提示输入密码。然后根据向导获取一段js代码,复制这段代码,把这段代码直接黏贴到相应的页面中即可。 和 一般情况下,把代码复制到项目中就可以使用zopim服务了,但是其中涉及到一些个性化的设计需要调整,我们就需要接下来的步骤。 设置 登陆之后,直接点击dashboard,在这里设置 继续阅读 »
2015-07-26 王财勇
本文是笔者在阅读众多资料,包括网上资料、教科书的基础上,编写而成。 其基本写作框架是: 1.从数学的角度,对奇异值分解做更加准确的描述,包括定义和性质; 2.matlab的奇异值分解函数简介; more 数学上的SVD 我们阐述关于SVD的定义。 【定义】令$A\in R^{m\times n}$,则存在正交矩阵 $U\in R^{m\times m}$, $V\in R^{n\times n}$使得: $$ A=U\Sigma V$$,其中$$\Sigma = diag(\Sigma_1,O) \in R^{m\times n}$$且 $\Sigma_1=diag(\sigma_1,\sigma_2,...,\sigma_r) 继续阅读 »