您好,登录后才能下订单哦!
1 数据对象映射模式
1数据对象映射模式,是将对象和数据存储映射起来,对一个对象的操作会映射为对数据存储的操作
2在代码中实现数据对象映射模式,我们实现一个ORM类,将复杂的SQL语句映射成对象属性的操作
3结合使用数据对象映射模式、工厂模式、注册模式
例子:
User.php
<?php
namespace IMooc;
class User
{
public $id;
public $name;
public $mobile;
public $regitime;
protected $db;
// 读取
function __construct($id){
$this->db = new \IMooc\Database\MySQL();
$this->db->connect('127.0.0.1','root','root','test');
$res = $this->db->query('select * from user limit 1');
$data = $res->fetch_assos();
$this->id = $data['id'];
$this->name = $data['name'];
$this->mobile = $data['mobile'];
$this->regitime = $data['regitime'];
}
// 可以在析构够 执行 修改 插入 删除
function __destruct(){
// 更新SQL
$this->db->query('update user set name = "{$this->name}", mobile="{$this->mobile}",regtime="{$this->regtime}",id="{$this->id}"');
}
}
index.php
<?php
$user = new User(1);
$user->mobile = '13880425377';
$user->name ='test';
$user->regtime = time();
var_dump($user->id,$user->name);
// 对对象的数据的读写
2 数据映射的复杂案例
index.php
<?php
class Page
{
function index()
{
}
$user = new \IMooc\User(1);
$user->mobile = '13880425377';
$user->name ='test';
$user->regtime = time();
}
工厂模式、注册器模式、单立模式
9 观察者模式
1 观察者模式(Observer),当一个对象状态发生改变时,依赖它的对象全部会收到通知,并自动更新
2 常见:一个事件发生后,要执行一连串更新操作,传统的编程方式,就是在时间的代码之后直接加入处理逻辑,当更新的逻辑增多之后,代码会变得难以维护,这种方式是耦合的,侵入式的,增加新的逻辑需要修改主体的代码
3 观察者模式实现了低耦合,非侵入式的通知于更新机制。
index.php
<?php
class Event extentd \IMooc\EventGenerator
{
function trigger()
{
echo 'Event<br/>';
echo '逻辑1<br/>';
echo '逻辑2<br/>';
$this->nodtify();
}
}
$event = new Event;
$event->trigger();
// 传统之上; 高度耦合,侵入式;
EventGenerator.php
<?php
namespace IMooc;
abstract class EventGenerator
{
protected $observers = array();
function addObserver(Observer$observer){
}
function notefy(){
foreach($this->observers as $observer){
$observer->update();
}
}
}
Observer.php
<?php
namespace IMooc;
interface Observer
{
function update($event_info=null);
}
<?php
class Observer1 implements \IMooc\Observer
{
function update()
{
}
}
10 原型模式
1 与工厂模式作用类似,都是用来创建对象
2 与工厂模式的实现不同,原型模式是先创建好一个原型对象,然后通过clone原型对象来创建新的对象,这样就免去了类创建时重复的初始化操作
3 原型模式适用于大对象的创建,创建一个大对象需要很大的开销,如果每次new就会消耗很大,原型模式仅需内存拷贝即可。
<?php
// 原型模式
class Canvas{
// 模拟画布
function init(){
echo 'init';
}
function draw(){
echo 'draw';
}
}
$canvas1 = new Canvas;
$canvas1->init();// 如果初始化消耗系统资源多
$canvas1->draw();
// 原型对象初始化 这样就少了初始化
$prototype = new Canvas;
$prototype->init();
$canvas2 = clone $prototype;
$canvas2->draw();
$canvas3 = clone $prototype;
$canvas3->draw();
11 装饰器模式
1 装饰器模式(Decorator),可以动态地添加修改类的功能
2 一个类提供了一项功能,如果要在修改并添加额外的功能,传统的编程模式,需要写一个子类集成它,并重新实现类的方法
3 使用装饰器模式,仅需要在运行时添加一个装饰器对象即可实现,可以实现最大的灵活性。
12 迭代器模式
1 在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素
2 相比于传统的编程模式,迭代器模式可以隐藏遍历元素所需的操作
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。