<?php
/*
?* WEB开发笔记 www.chhua.com 每日练习之PHP设计模式继承的实现
?*/
/*
?* 类说明:某大学开两门课程,一个是PHP,一个是JAVA,规定不同的价格
?*/
abstract class lesson {//定义一个抽象基类
?protected $lessonType;
?const PHP=1;
?const JAVA=2;
?public function __construct($type=1){
??$this->lessonType=$type;
?}
?
?public function cost(){//计算学费
??switch ($this->lessonType){
???case self::PHP:
????return 30;
????break;
???case self::JAVA:
????return 50;
????break;
???default:
????$this->lessonType=self::PHP;
????return 30;??
??}
?}
?
?public function getType(){//返回类型字符串
??switch ($this->lessonType){
???case self::PHP:
????return “Lesson For PHP”;
????break;
???case self::JAVA:
????return “Lesson For JAVA”;
????break;
???default:
????$this->lessonType=self::PHP;
????return “Lesson For PHP”;?
??}
?}
}

class lessonPHP extends lesson{
?public function getFeiyong(){//自己的特性方法
??echo $this->cost();
?}
}

class lessonJAVA extends lesson{
?public function getLessonName(){//自己的特性方法
??echo $this->getType();
?}
}

$phpLesson=new lessonPHP(1);
$javaLesson= new lessonJAVA(2);

$phpLesson->getFeiyong();
$javaLesson->getLessonName();

/*
?*注:以上就是通过继承实现类的多态的最简单的例子,然而会有一个问题,
?*如果课程再有JS,HTML,FLEX 等,是不是SWITCH语句会很长?
?*如果真是是那样,类的独立性就不好了,耦合性太重,不利于后期的维护,怎么做?
?*用PHP组合来实现,答案在www.chhua.com
?*/
?>

自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

本文链接地址: PHP设计模式通过继承实现多态 http://www.chhua.com/web-note757

相关笔记

更多