PHP面向对象程序设计之对象生成的示例分析
发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,这篇文章给大家分享的是有关PHP面向对象程序设计之对象生成的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:对象看个例子
千家信息网最后更新 2024年11月20日PHP面向对象程序设计之对象生成的示例分析
这篇文章给大家分享的是有关PHP面向对象程序设计之对象生成的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
具体如下:
对象
看个例子
name = $name; } abstract function fire();}class Minion extends Employee { // 奴隶 继承 雇员 function fire() { print "{$this->name}: I'll clear my desk\n"; }}class NastyBoss { // 坏老板 private $employees = array(); function addEmployee( $employeeName ) { // 添加员工 $this->employees[] = new Minion( $employeeName ); // 代码灵活性受到限制 } function projectFails() { if ( count( $this->employees ) > 0 ) { $emp = array_pop( $this->employees ); $emp->fire(); // 炒鱿鱼 } }}$boss = new NastyBoss();$boss->addEmployee( "harry" );$boss->addEmployee( "bob" );$boss->addEmployee( "mary" );$boss->projectFails();// output:// mary: I'll clear my desk?>
再看一个更具有灵活性的案例
name = $name; } abstract function fire();}class Minion extends Employee { function fire() { print "{$this->name}: I'll clear my desk\n"; }}class NastyBoss { private $employees = array(); function addEmployee( Employee $employee ) { // 传入对象 $this->employees[] = $employee; } function projectFails() { if ( count( $this->employees ) ) { $emp = array_pop( $this->employees ); $emp->fire(); } }}// new Employee class...class CluedUp extends Employee { function fire() { print "{$this->name}: I'll call my lawyer\n"; }}$boss = new NastyBoss();$boss->addEmployee( new Minion( "harry" ) ); // 直接以对象作为参数,更具有灵活性$boss->addEmployee( new CluedUp( "bob" ) );$boss->addEmployee( new Minion( "mary" ) );$boss->projectFails();$boss->projectFails();$boss->projectFails();// output:// mary: I'll clear my desk// bob: I'll call my lawyer// harry: I'll clear my desk?>
单例
props[$key] = $val; } public function getProperty( $key ) { return $this->props[$key]; }}$pref = Preferences::getInstance();$pref->setProperty( "name", "matt" );unset( $pref ); // remove the reference$pref2 = Preferences::getInstance();print $pref2->getProperty( "name" ) ."\n"; // demonstrate value is not lost?>
点评:不能随意创建对象,只能通过Preferences::getInstance()来创建对象。
工厂模式
getApptEncoder(); // 获取对象print $bloggs->encode();?>
output:
Appointment data encoded in BloggsCal format
进一步增加灵活性设置
mode = $mode; } function getHeaderText() { switch ( $this->mode ) { case ( self::MEGA ): return "MegaCal header\n"; default: return "BloggsCal header\n"; } } function getApptEncoder() { switch ( $this->mode ) { case ( self::MEGA ): return new MegaApptEncoder(); default: return new BloggsApptEncoder(); } }}$man = new CommsManager( CommsManager::MEGA );print ( get_class( $man->getApptEncoder() ) )."\n";$man = new CommsManager( CommsManager::BLOGGS );print ( get_class( $man->getApptEncoder() ) )."\n";?>
output:
MegaApptEncoder
BloggsApptEncoder
工厂方法模式要把创建者类与要生产的产品类分离开来。
抽象工厂
通过抽象来来约束,成为一定的规矩。
getHeaderText();print $mgr->getApptEncoder()->encode(); // 对象调用方法,返回对象,继续调用方法。print $mgr->getFooterText();?>
output:
MegaCal header
Appointment data encoded in MegaCal format
MegaCal footer
更加牛逼的实现
getHeaderText();print $mgr->make( CommsManager::APPT )->encode();print $mgr->getFooterText();?>
output:
BloggsCal header
Appointment data encoded in BloggsCal format
BloggsCal footer
原型模式
改造成一个保存具体产品的工厂类。
sea = $sea; $this->plains = $plains; $this->forest = $forest; } function getSea( ) { return clone $this->sea; // 克隆 } function getPlains( ) { return clone $this->plains; } function getForest( ) { return clone $this->forest; }}$factory = new TerrainFactory( new EarthSea(), new EarthPlains(), new EarthForest() );print_r( $factory->getSea() );print_r( $factory->getPlains() );print_r( $factory->getForest() );?>
output:
EarthSea Object()EarthPlains Object()EarthForest Object()
感谢各位的阅读!关于"PHP面向对象程序设计之对象生成的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
对象
工厂
灵活性
方法
模式
示例
程序
程序设计
分析
生成
设计
内容
更多
篇文章
不错
实用
炒鱿鱼
产品
代码
例子
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
浙江百世网络技术有限公司
高中网络技术学业水平考试题
取消代理服务器
三星t3500服务器
北京供应商外贸软件开发
小牛哥整家互联网科技怎么样
优盛网络技术有限公司
黑暗之魂2不能连接服务器吗
战雷欧服服务器在哪
java 服务器文件路径
汇源网络安全技术
花果园L区软件开发公司
哪个数据库有银行报表怎么做
日照职业技术学院数据库
充电桩软件开发需要会什么
服务器云主机价格
如何设定网络安全等级
http访问数据库
网络安全国家政府部门
部队职工数据库补录
泓医互联网科技
战神引擎人物数据库
找人软件开发需要注意
服务器net3.5怎么装不上
杰科软件开发工作环境
计算机网络技术英文名
数据库系统创建表
服务器禁止修改管理员密码
向社会发布哪些网络安全信息
网络技术的认识和感受