-
原型模式:通过克隆(clone)来在内存拷贝大对象,节约开销。查看全部
-
定义一个观察者接口,以及定义不同的观察者实现这个接口,实现接口定义的方法。 定义一个abstract事件抽象类,定义了一个添加观察者的方法(接受一个观察者对象),再定义一个通知方法,向所有的观察者发出更新的通知。查看全部
-
定义一个策略接口,定义多个具体的策略类,使用的时候,根据上下文的不同,调用对应的策略类,使用相同的接口方法,执行不同的策略代码查看全部
-
使用命名空间,那调用方法的时候就要写很长一串,那么可以使用 别名功能查看全部
-
在代码中实现数据对象映射模式,我们将实现一个ORM类,将复杂的SQL语句映射成对象属性的操作。 在代码中实现数据对象映射模式,我们将实现一个ORM类,将复杂的sql语句映射成对象属性的操作 结合使用数据对象映射模式,工厂模式,注册模式查看全部
-
策略模式:依赖倒置,控制反转。查看全部
-
PHP策略模式: UserStrategy.php策略的接口文件:约定策略的所有行为。 FemaleUserStrategy.php 实现接口的所有方法 MaleUserStrategy.php 调用: class Page { protected $strategy; function index() { echo "AD:"; $this->strategy->showAd(); echo "<br/>"; echo "Category:"; $this->strategy->showCategory(); echo "<br/>"; } function setStrategy(\IMooc\UserStrategy $strategy) { $this->strategy=$strategy; } } $page=new Page(); if(isset($_GET["female"])) { $strategy=new \IMooc\FemaleUserStrategy(); } else{ $strategy=new \IMooc\MaleUserStrategy(); } $page->setStrategy($strategy); $page->index();查看全部
-
1.策略模式,将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,这种模式就是策略模式。 2.实际应用举例,假如一个电商网站系统,针对男性女性用户要各自跳转到不同的商品类目,并且所有广告位展示不同的广告。查看全部
-
PHP适配器模式实现: 首先定一一个接口,再让各个实现类去实现这个接口。从而达到适配器效果。查看全部
-
1.适配器模式,可以将截然不同的函数接口封装成统一的API 2.实际应用举例,PHP数据库操作有mysql,mysqli,pdo三种,可以用适配器模式统一成一致。类似场景还有cache适配,将memcache,redis,file,apc等不同的缓存函数,统一成一致查看全部
-
注册器模式: namespace IMooc; class Register { protected static $objects; //注册。如Register::set('db1',$db); function set($alias,$object) { self::$object[$alias]=$object; } //取值。如$db=IMooc\Register::get('db1'); static function get($name) { return self::$object[$alias]; } //移除 function _unset($alias) { unset(self::$object[$alias]); } }查看全部
-
PHP单例模式: class Database { protected static $db; private function __construct() { } static function getInstance() { if(!isset(self::$db)) { return self::$db; } else { self::$db=new self(); return self::$db; } } function where($where) { return $this; } function order($order) { return $this; } function limit($limit) { return $this; } }查看全部
-
设计模式,工厂模式:工厂方法或者类生成对象,而不是在代码中直接new ,单例模式:使某个类的对象仅允许创建一个 ,注册模式:全局共享和交换对象查看全部
-
php四种魔术方法: namespace IMooc; class Object { protected $array=array(); //设置不存在属性值时调用。如$obj->name="domico" ; function __set($key,$value) { var_dump(__METHOD__); $this->array[$key]=$value; } //获取不存在属性值时调用。如$obj->name; function __get($key) { var_dump(__METHOD__); return $this->array[$key]; } //调用不存在方法时调用。如$obj->test(); function __call($func,$param) { var_dump($func,$param); return "magic function"; } //与__call的区别是 静态方法。 如IMooc\Object::test(); static function __callStatic($func,$param) { var_dump($func,$param); return "static magic function"; } //直接输出实例时,如echo $obj; function __toString() { return __CLASS__; } //将实例当成方法使用时。如 $obj("hh"); function __invoke($param) { var_dump($param); return "invoke"; } }查看全部
-
链式操作的核心点在于:业务逻辑结束后返回当前对象。如:return $this;查看全部
举报
0/150
提交
取消