网易博客网站关停、迁移的公告:

将从2018年11月30日00:00起正式停止网易博客运营
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

php开发lnmp

《西安--木木》-经历丰富了生活。 架构师QQ群: 246695517

 
 
 
 
 
 

陕西省 西安市

 发消息  写留言

 
职    业 高级软件工程师
专长技能专注软件架构、面向对象、设计模式、框架研究、深入OOP
兴趣爱好: 软件,看书,旅游,文学,上网,摄影,艺术,音乐
喜欢运动: 登山,旅行
QQ1211884772
E-Mail net08118@163.com
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 

热门日志

 
 
数据列表加载中...
 
 
 
 
 

网易新闻资讯

 
 
 
 
新闻标题 
列表加载中...
 
 
 
 
 

天气

 
 
模块内容加载中...
 
 
 
 
 
 
 
圈子列表加载中...
 
 
 
 
 

精彩摄影作品

 
 
相片列表加载中...
 
 
 
 
 
 
 
 

常见的 JQuery 正则表达式以及验证方法(转)

2018-4-8 1:57:40 阅读28 评论0 82018/04 Apr8

一、校验数字的表达式

 1 数字:^[0-9]*$

 2 n位的数字:^\d{n}$

 3 至少n位的数字:^\d{n,}$

 4 m-n位的数字:^\d{m,n}$

 5 零和非零开头的数字:^(0|[1-9][0-9]*)$

 6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$

 7 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$

 8 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$

 9 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$

10 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$

11 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$

12 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$

13 非负整数:^\d+$ 或 ^[1-9]\d*|0$

14 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$

15 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$

作者  | 2018-4-8 1:57:40 | 阅读(28) |评论(0) | 阅读全文>>

策略模式Strategy

2018-3-12 15:04:47 阅读38 评论0 122018/03 Mar12

<?php

/**

* 策略模式Strategy(对象行为型)

*/

// 抽象策略类

interface OrderStrategy

{

/**

* 计算订单实付金额

* @param $total_price

* @return mixed

*/

public function actualPay($total_price);

}

//  初级会员折扣 具体策略类

class PrimaryMemberStrategy implements OrderStrategy

{

public function actualPay($total_price)

{

echo '对于初级会员的没有折扣:0', '支付价格:',$total_price,'<br/>';

}

}

// 中级会员折扣

class IntermediateMemberStrategy implements OrderStrategy

{

public function actualPay($total_price)

{

作者  | 2018-3-12 15:04:47 | 阅读(38) |评论(0) | 阅读全文>>

简单工厂模式

2018-3-12 15:03:21 阅读165 评论0 122018/03 Mar12

<?php

/**

* 工厂模式

*/

/**

定义:简单工厂模式,定义一个工厂类,它根据参数的不同返回不同类的实例,

被创建的实例通常具有共同的父类,简单工厂中用于创建实例的方法是静态的,

属性:工厂模式属于类创建型模式。

*/

abstract class Product{

protected $data=array();

// 强制要求子类定义这些方法

abstract protected function getData();

abstract protected function setData($name);

// 普通方法(非抽象方法)

public function printOut() {

print $this->getData() . "\r\n";

}

}

class NissanCar extends Product{

public function getData(){

return $this->data;

}

public function setData($name){

$this->data[]=$name;

作者  | 2018-3-12 15:03:21 | 阅读(165) |评论(0) | 阅读全文>>

Responsibility责任链模式

2018-3-12 15:01:30 阅读40 评论0 122018/03 Mar12

<?php

/**

* Responsibility责任链模式

*/

//Abstract:抽象处理者类

abstract class Handler

{

private $name = ''; //姓名

private $successor = null;//下一步操作者

public function handleRequest($objectPrice, $objectName)

{

}

public function getName()

{

return $this->name;

}

public function setName($name)

{

$this->name = $name;

}

public function getSuccessor()

{

return $this->successor;

}

public function setSuccessor($successor)

{

$this->successor = $successor;

作者  | 2018-3-12 15:01:30 | 阅读(40) |评论(0) | 阅读全文>>

代理模式

2018-3-12 15:00:07 阅读38 评论0 122018/03 Mar12

<?php

/**

* 代理模式

*

*/

class Proxy

{

private $server = '192.168.0.249';

private $port = '9999';

private $protocol = 'http';

private static $url = '';

private static $obj = null;

private function __construct()

{

}

/**

* @param $url 代理服务url

* @return null|Proxy

*/

public static function instance($url)

{

if (self::$obj ==null) {

self::$url = $url;

return new self($url);

}

return self::$obj;

}

/**

作者  | 2018-3-12 15:00:07 | 阅读(38) |评论(0) | 阅读全文>>

原型模式

2018-3-12 14:57:43 阅读30 评论0 122018/03 Mar12

<?php

/**

原型模式

*/

/**

定义:原型模式使用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象。

属性:原型模式属于对象创建型模式。

*/

//抽象原型类

interface Prototype{

public function shanllowCopy();

public function deepCopy();

}

//具体类

class ConcretePrototype implements Prototype{

public $name = 'yy';

private $attachment = null;

//浅拷贝

public function shanllowCopy(){

return clone $this;

}

//深拷贝

public function deepCopy(){

$serialize_obj = serialize($this);

$clone_obj = unserialize($serialize_obj);

return $clone_obj;

}

public function setAttachment($attachment)

作者  | 2018-3-12 14:57:43 | 阅读(30) |评论(0) | 阅读全文>>

观察着模式

2018-3-12 14:56:15 阅读34 评论0 122018/03 Mar12

<?php

/**

* 观察着模式

*/

/**

定义:对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动 更新。

思想:将实际扩展操作,降低到子类

应用:登录成功后,发送邮件、写入日志

*/

//主体接口

interface Observable

{

public function attach(Observer $observer);

public function detach(Observer $observer);

public function notify();

}

//主体

class Login implements Observable

{

private $observers = array();//注册观察者

public function attach(Observer $observer)

{

$this->observers[] = $observer;

}

public function detach(Observer $observer)

{

$new_observers = array();

作者  | 2018-3-12 14:56:15 | 阅读(34) |评论(0) | 阅读全文>>

Memento备忘录模式

2018-3-12 14:55:02 阅读29 评论0 122018/03 Mar12

<?php

/**

* Memento备忘录模式

*

* 发起人:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。

* 备忘录:负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。

* 管理角色:对备忘录进行管理,保存和提供备忘录。

*/

/**

* 多步悔棋功能,案例在线下象棋

*/

//原发器 下象棋类

class Originator

{

private $chessman = '';//棋名称,兵

private $x = 0; //x坐标

private $y = 0; //y坐标

public function __construct($chessman, $x, $y)

{

$this->chessman = $chessman;

$this->x = $x;

$this->y = $y;

}

public function setChessman($chessman)

{

$this->chessman = $chessman;

作者  | 2018-3-12 14:55:02 | 阅读(29) |评论(0) | 阅读全文>>

Flyweight享元模式

2018-3-12 14:31:11 阅读29 评论0 122018/03 Mar12

<?php

/**

* Flyweight享元模式

*/

//围棋棋子类:抽象享元类

abstract class IgoChessman

{

public abstract function getColor();

public function display(Coordinates $coord)

{

print("棋子颜色:" . $this->getColor() . ",棋子位置:" . $coord->getX(). "," . $coord->getY().'<br/>');

}

}

//黑色棋子类:具体享元类

class BlackIgoChessman extends IgoChessman

{

public function getColor()

{

return "黑色";

}

}

//白色棋子类:具体享元类

class WhiteIgoChessman extends IgoChessman

{

public function getColor()

{

作者  | 2018-3-12 14:31:11 | 阅读(29) |评论(0) | 阅读全文>>

工厂方法模式|多态工厂模式

2018-3-12 14:29:45 阅读31 评论0 122018/03 Mar12

<?php

/**

工厂方法模式|多态工厂模式

*/

/**

定义:工厂方法模式,先定义一个创建对象的接口,在子类中实例化类。

工厂方法模式让一个类的实例化延迟到子类。

属性:工厂方法模式属于类创建型模式。

备注:抽象类不能被实例化

*/

interface Product{

public function getData();

public function setData($name);

}

class NissanCar implements Product{

protected $data=array();

// 类中必须实现接口中定义的所有方法

public function getData(){

return $this->data;

}

public function setData($name,$key='like'){

$this->data[$key]=$name;

}

// 普通方法

public function printOut() {

print $this->getData() . "\r\n";

作者  | 2018-3-12 14:29:45 | 阅读(31) |评论(0) | 阅读全文>>

Facade外观模式

2018-3-12 14:27:49 阅读73 评论0 122018/03 Mar12

<?php

/**

* Facade外观模式

*/

/**

如果增加一个新的外观类NewEncryptFacade来与FileReader类、

FileWriter类以及新增加的NewCipherMachine类进行交互,

虽然原有系统类库无须做任何修改,但是因为客户端代码中原来针对EncryptFacade类进行编程,

现在需要改为NewEncryptFacade类,因此需要修改客户端源代码。

如何在不修改客户端代码的前提下使用新的外观类呢?

解决方法之一是:引入一个抽象外观类,客户端针对抽象外观类编程,而在运行时再确定具体外观类

*

*

*

*

*/

class FileReader

{

public function Read($fileNameSrc)

{

print("读取文件,获取明文:");

}

}

//CipherMachine:数据加密类,充当子系统类。

class CipherMachine

{

public function Encrypt($plainText)

{

print("数据加密,将明文转换为密文:");

作者  | 2018-3-12 14:27:49 | 阅读(73) |评论(0) | 阅读全文>>

装饰器模式decorate

2018-3-12 14:25:26 阅读31 评论0 122018/03 Mar12

<?php

/**

* 装饰器模式decorate

*/

/**

* Component充当抽象构件类,其子类Window、TextBox、ListBox充当具体构件类,

* Component类的另一个子类ComponentDecorator充当抽象装饰类,

* ComponentDecorator的子类ScrollBarDecorator和BlackBorderDecorator充当具体装饰类

*/

//抽象界面构件类:抽象构件类,为了突出与模式相关的核心代码,对原有控件代码进行了大量的简化

abstract class Component

{

public abstract function display();

}

//窗体类:具体构件类

class Window extends Component

{

public function display()

{

print("显示窗体!<br/>");

}

}

//文本框类:具体构件类

class TextBox extends Component

{

public function display()

作者  | 2018-3-12 14:25:26 | 阅读(31) |评论(0) | 阅读全文>>

组合模式Composite

2018-3-12 14:24:20 阅读32 评论0 122018/03 Mar12

php设计模式 php组合模式Composite

<?php

/**

* 组合模式Composite

*/

/**

* 组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。

* 组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,

* 组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。

*/

//抽象文件类:抽象构件

abstract class AbstractFile

{

public abstract function add(AbstractFile $file);

public abstract function remove(AbstractFile $file);

public abstract function getChild($i);

public abstract function killVirus();

}

//图像文件类:叶子构件

class ImageFile extends AbstractFile

{

private $name = '';

public function __construct($name)

作者  | 2018-3-12 14:24:20 | 阅读(32) |评论(0) | 阅读全文>>

命令模式Command

2018-3-12 14:22:51 阅读26 评论0 122018/03 Mar12

<?php

/**

*命令模式Command

*命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。

*/

/**

* 定义一个命令抽象类

*/

abstract class Command

{

/**

* 执行命令

*/

public function execute(){}

/**

* 撤销命令

*/

public function undo(){}

}

/**

* 具体命令(ConcreteCommand)

*/

class ConcreteCommand extends Command

{

private $rec = null;

public function __construct(Receiver $rec)

{

$this->rec = $rec;

}

/**

* 执行命令

作者  | 2018-3-12 14:22:51 | 阅读(26) |评论(0) | 阅读全文>>

builder建造者模式

2018-3-12 14:21:36 阅读19 评论0 122018/03 Mar12

<?php

/**

* builder建造者模式

* 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

*/

//Product类

class Person

{

private $parts = array();

public function Add($part)

{

array_push($this->parts, $part);

}

public function Show()

{

foreach ($this->parts as $k => $v) {

echo $v, '<br/>';

}

}

}

//抽象builder类

abstract class Builder

{

protected $person;

public function __construct()

{

$this->product = new Person();

作者  | 2018-3-12 14:21:36 | 阅读(19) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018

注册 登录  
 加关注