476

说明

1、将两个原本不相关的类结合在一起,然后利用两个类中的方法和属性,输出一份新的结果。

2、结构分为抽象类、被提炼的抽象类、实现类、具体实现类和客户端代码。

实例

/**
*颜色抽象类
*ClassColour
*/
abstractclassColour
{
/**
*@returnmixed
*/
abstractpublicfunctionrun();



/**
*黑色
*ClassBlack
*/
classBlackextendsColour
{
publicfunctionrun()
{
//TODO:Implementrun()method.
return'黑色';




/**
*白色
*ClassWhite
*/
classWhiteextendsColour
{
publicfunctionrun()
{
//TODO:Implementrun()method.
return'白色';




/**
*红色
*ClassRed
*/
classRedextendsColour
{
publicfunctionrun()
{
//TODO:Implementrun()method.
return'红色';




/**
*形状抽象类
*ClassShape
*/
abstractclassShape
{
/**
*颜色
*@varColour
*/
protected$colour;


/**
*Shapeconstructor.
*@paramColour$colour
*/
publicfunction__construct(Colour$colour)
{
$this->colour=$colour;



/**
*@returnmixed
*/
abstractpublicfunctionoperation();



/**
*圆形
*ClassRound
*/
classRoundextendsShape
{
/**
*@returnmixed|void
*/
publicfunctionoperation()
{
//TODO:Implementoperation()method.
echo$this->colour->run().'圆形<br>';




/**
*长方形
*ClassRectangle
*/
classRectangleextendsShape
{
/**
*@returnmixed|void
*/
publicfunctionoperation()
{
//TODO:Implementoperation()method.
echo$this->colour->run().'长方形<br>';




/**
*正方形
*ClassSquare
*/
classSquareextendsShape
{
/**
*@returnmixed|void
*/
publicfunctionoperation()
{
//TODO:Implementoperation()method.
echo$this->colour->run().'正方形<br>';




//客户端代码
//白色圆形
$whiteRound=newRound(newWhite());
$whiteRound->operation();

//黑色正方形
$blackSquare=newSquare(newBlack());
$blackSquare->operation();

//红色长方形
$redRectangle=newRectangle(newRed());
$redRectangle->operation();


//运行结果
白色圆形
黑色正方形
红色长方形
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。