온라인으로 휴대폰을 구매한 친구들은 판매자가 일반적으로 여러 개의 휴대폰 패키지를 매칭하여 고객이 자유롭게 선택할 수 있다는 것을 알고 있습니다. 이제 모든 휴대폰에 대해 세 가지 패키지를 출시한 휴대폰 판매점이 있습니다. , 베어메탈은 표준 패키지에서 200위안이고, 전체 구성은 표준 패키지에서 100위안 추가입니다. 우리는 이를 구현하기 위해 PHP를 사용합니다.
<?php abstract class mobile{ abstract public function getInfo(); abstract public function getPrice(); } class iphone extends mobile{ private $price=4999; private $info='官方标配(手机+电源+数据线+耳机)'; public function getInfo(){ return $this->info; } public function getPrice(){ return $this->price; } } class bareIphone extends iphone{ private $info='裸机(手机)'; public function getInfo(){ return $this->info; } public function getPrice(){ return parent::getPrice()-200; } } class fullSetIphone extends iphone{ private $info='套装(手机+电源+数据线+耳机+手机壳+贴膜+移动电源)'; public function getInfo(){ return $this->info; } public function getPrice(){ return parent::getPrice()+100; } } class lumia920 extends mobile{ private $price=4399; private $info='官方标配(手机+电源+数据线+耳机)'; public function getInfo(){ return $this->info; } public function getPrice(){ return $this->price; } } class bareLumia920 extends lumia920{ private $info='裸机(手机)'; public function getInfo(){ return $this->info; } public function getPrice(){ return parent::getPrice()-200; } } class fullSetLumia920 extends lumia920{ private $info='套装(手机+电源+数据线+耳机+手机壳+贴膜+移动电源)'; public function getInfo(){ return $this->info; } public function getPrice(){ return parent::getPrice()+100; } } $iphone=new fullSetIphone(); echo 'iphone全套配置价格为:'.$iphone->getPrice().',配置为:'.$iphone->getInfo(); echo '<br>'; $lumia920=new bareLumia920(); echo 'lumia920全套配置价格为:'.$lumia920->getPrice().',配置为:'.$lumia920->getInfo(); ?>
아이폰용과 루미아920용으로 각각 3개의 패키지를 설정했는데, 살펴보면 아이폰용과 루미아920의 bare 방식과 fullSet 방식이 완전히 똑같다는 것을 알 수 있다. 데코레이션 모드가 필요한 bare 메소드와 fullSet 메소드를 완전히 분리할 수 있습니다.
<?php abstract class mobile{ abstract public function getInfo(); abstract public function getPrice(); } class iphone extends mobile{ private $price=4999; private $info='官方标配(手机+电源+数据线+耳机)'; public function getInfo(){ return $this->info; } public function getPrice(){ return $this->price; } } class lumia920 extends mobile{ private $price=4399; private $info='官方标配(手机+电源+数据线+耳机)'; public function getInfo(){ return $this->info; } public function getPrice(){ return $this->price; } } //装饰类 abstract class decorateIphone extends mobile{ protected $iphone; public function __construct(mobile $iphone){ $this->iphone=$iphone; } } class bare extends decorateIphone{ private $info='裸机(手机)'; public function getInfo(){ return $this->info; } public function getPrice(){ return $this->iphone->getPrice()-200; } } class fullSet extends decorateIphone{ private $info='套装(手机+电源+数据线+耳机+手机壳+贴膜+移动电源)'; public function getInfo(){ return $this->info; } public function getPrice(){ return $this->iphone->getPrice()+100; } } $iphone=new fullSet(new iphone()); echo 'iphone全套配置价格为:'.$iphone->getPrice().',配置为:'.$iphone->getInfo(); echo '<br>'; $lumia920=new bare(new lumia920()); echo 'lumia920裸机价格为:'.$lumia920->getPrice().',配置为:'.$lumia920->getInfo(); ?>
위 내용은 PHP 객체지향 개발 내용입니다. 모드 관련 내용을 더 보시려면 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!