千家信息网

PHP面向对象程序设计之对象生成的示例分析

发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章给大家分享的是有关PHP面向对象程序设计之对象生成的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:对象看个例子
千家信息网最后更新 2025年11月06日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安全错误 数据库的锁怎样保障安全 软件开发流程图如何画 新洲软件开发与定制 市场部数据库 政府单位计算机网络安全 竹山良好软件开发市场 上海工业软件开发代理价钱 做网络技术学徒 小学生网络安全广告语 河北偶惠网络技术有限公司 济南美易计算机网络技术平台 合同法之软件开发与软件销售 sql网络数据库连接设置 数据库设计动静分离 华为的网络安全视频 数据库系统数据三级模式 网络安全工程师头像女动漫 紫盘能不能安装在服务器上 域控服务器会被攻击吗 小程序专业软件开发商 软件开发项目负责人岗位工作 苹果如果删除数据库页面 浦东新区网络营销软件开发价钱 网络安全法对关键 数据库系统特点的描述正确的 腾讯云服务器云硬盘 学习软件开发需要什么知识 旅馆数据库是什么文件夹 预防网络安全的英语作文 南京汉路网络技术有限公司 上海金科信软件开发有限公司
0