螃蟹学PHP设计模式之适配器模式
之前对java的设计模式略有了解,但是螃蟹目前是靠PHP吃饭,所以对于进阶学习php设计模式还是很有必要。螃蟹虽然做开发两年了,但是在老鸟眼中还是菜鸟,为了自己写的代码更容易维护和进行团队协作,所以我要搞定设计模式。希望螃蟹今年能创业成功或找个好工作。
1.适配器模式
螃蟹的理解是你买了港行的iphone手机,发现自家的插座和手机自带的插头不配,怎么办呢,就需要一个转换器(适配器)。可能原来系统的类不是你设计的,但是现在你要使用原来的类,发现有问题,但原来的类又不能动,或者不需要动,这样你写一个类继承原来的类,再在新的类中添加想要的东西,再拿去用就可以了。螃蟹还是写一下代码记得牢固一点。
参考项目模块:会员系统
螃蟹之前遇到过某项目的会员系统,原来的会员对象已经定义了,但是新的项目又需要使用原系统的对象,但是新项目又增加了几个属性,这样适配器模式就利用上了,下面代码敲一遍,螃蟹写的代码都是在zend studio里面手打的并且测试过了的
原会员系统会员对象类User.class.php:
<?php class User{ private $username = null; private $password = null; function __construct($user){ $this->username = $user[‘username‘]; $this->password = $user[‘password‘]; } /** * @return the $username */ public function getUsername() { return $this->username; } /** * @return the $password */ public function getPassword() { return $this->password; } /** * @param NULL $username */ public function setUsername($username) { $this->username = $username; } /** * @param NULL $password */ public function setPassword($password) { $this->password = $password; } } ?>
现在需要增加邮箱和个人简介,那原来的类不能直接改,那就使用适配器吧,创建UserAdapter.class.php
<?php require(‘User.class.php‘); class UserAdapter extends User{ private $email = null; private $description = null; function __construct($user){ parent::__construct($user); $this->email = $user[‘email‘]; $this->description = $user[‘description‘]; } /** * @return the $email */ public function getEmail() { return $this->email; } /** * @return the $description */ public function getDescription() { return $this->description; } /** * @param NULL $email */ public function setEmail($email) { $this->email = $email; } /** * @param NULL $description */ public function setDescription($description) { $this->description = $description; } } ?>
好的,我来测试一下结果:TestAdapter.php
<?php require(‘UserAdapter.class.php‘); //模拟用户数据 $user = array(‘username‘=>‘螃蟹‘,‘password‘=>‘SB123456‘,‘email‘=>‘[email protected]‘,‘description‘=>‘螃蟹也会思考‘); //实例化适配器对象 $userobj = new UserAdapter($user); //输出结果 echo ‘ Username: ‘.$userobj->getUsername(); echo ‘<br>Password: ‘.$userobj->getPassword(); echo ‘<br>Email: ‘.$userobj->getEmail(); echo ‘<br>Description: ‘.$userobj->getDescription(); //改变密码和Email $userobj->setPassword(‘ok456789‘); $userobj->setEmail(‘[email protected]‘); //输出改变后的结果 echo ‘<br><br>Password: ‘.$userobj->getPassword(); echo ‘<br>Email: ‘.$userobj->getEmail(); ?>
测试结果:
Username: 螃蟹 Password: SB123456 Email: [email protected] Description: 螃蟹也会思考 Password: ok456789 Email: [email protected]
螃蟹觉得看起来高深的设计模式也还好懂,今天就到这里了,明天再学习新的设计模式了,继续单身的横着睡了。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。