/** * 例 * * ある農場が市場に果物を売りたいと考えています * 農場にはリンゴとブドウの 3 種類の果物があります * 私たちは次のように想像しています: 1. 果物には多くの属性があり、それぞれの属性は異なります。しかし、それらには共通の場所があります | 育てる、植える、受け取る、食べる * 2. 新しい果物が将来追加される可能性があります。それらが実装する必要があるメソッドを標準化するためのインターフェイスを定義する必要があります * 3. のクラスを取得する必要があります。特定の果物、栽培、植え方、収穫、食べ方を知るには、農家から特定の果物の例を入手する必要があります*/ /** * 仮想製品インターフェイス クラス * 実装する必要があるメソッドを定義 */ /** *成長 */ パブリック関数 give(); /** *植栽 */ パブリック関数 plant(); /** * 収穫 */ パブリック関数 Harvest(); /** *食べる */ public function Eat(); } /** * 特定の製品カテゴリ Apple を定義します * まず、継承されたインターフェイスによって定義されたメソッドを実装する必要があります * 次に、Apple 固有の属性とメソッドを定義します */ class apple は Fruit を実装します{ < p> //苹果树有年龄 private $treeAge; //苹果有颜色 private $color; パブリック関数grow(){ echo "ブドウの成長"; } public function plant(){ echo "ブドウの植物"; } public function Harvest(){ echo "ブドウの収穫"; } public function Eat(){ echo "ブドウを食べる"; } //取苹果树の年龄 public function getTreeAge(){ return $this->gt;treeAge; } //設置結果树の年龄 public function setTreeAge($age){ $this->gt;treeAge = $age; return trie; } } /** * 特定の製品クラス Grape を定義します * まず、継承されたインターフェイスによって定義されたメソッドを実装する必要があります * 次に、Grape の固有の属性とメソッドを定義します */ クラス ブドウ器具フルーツ{ //葡萄があるかどうか private $seedLess; public function give(){ echo "apple give"; } public function plant(){ echo "apple plant"; } public function Harvest(){ echo "リンゴの収穫"; } public function Eat(){ echo "apple Eat"; } //有無籽取值 public function getSeedLess(){ return $this->seedLess; } //設置有籽無し public function setSeedLess($seed){ $this->gt;seedLess = $seed; return true; } } /** *ファーマークラスはインスタンス化されたフルーツを取得するために使用されます * */ 級農民{ //定义个静态工厂メソッド public static function Factory($fruitName){ switch ($fruitName) { case 'apple': return new apple(); Break; case 'grape': return newgrape (); break; default: throw new badFruitException("Error no the Fruit", 1); Break; } } } class badFruitException extends Exception{ public $msg; public $errType; public function __construct($msg = '' , $errType = 1){ $this->msg = $msg; $this->errType = $errType; } } /** * フルーツのインスタンス化を取得するメソッド */ try{ $appleInstance = farmer::factory('apple'); var_dump($appleInstance); }catch(badFruitException $err ){ echo $err->msg . 「_______」 。 $err->errType; } 复制代