PHP面向对象程序设计之对象生成的示例分析
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,这篇文章给大家分享的是有关PHP面向对象程序设计之对象生成的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:对象看个例子
千家信息网最后更新 2025年02月08日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安全错误
数据库的锁怎样保障安全
长沙软件开发项目
tt服务器
网络安全写心得体会
tplink打印服务器
软件开发过程的分析过程不包括
数据库结果集是什么东西
软件开发的编程语言好学吗
极限竞速地平线4无法连上服务器
江西视频服务器厂家
软件开发用什么显卡
游戏独立服务器租用
文件管理服务器java
罗湖区口碑好的网络技术服务费
台州逸文网络技术有限公司
女生学习网络安全吗
潍坊雷讯互联网络科技
互联网信息网络安全发展现状
大学生关于网络安全事例
我的世界萌新建筑服务器账号
手机游戏服务器处理请求信息失败
如何开拓客户营业软件开发
百庄互联网科技有限公司
新吴区软件开发工具怎么用
国家网络安全特辑总结
sql2000数据库附加错误
农行鲲鹏PC服务器采购项目
脏数据的读出是数据库安全性
驾考系统数据库设计
miniso文件服务器
手机游戏服务器处理请求信息失败