前序
這回小菜同學和大鳥討論起了關於股票的事情,小菜提到最近股市很火,不過他的同事一直在虧錢。而大鳥說道:“如果你的同事花錢去投資基金,則不會虧的這麼厲害。基金將所有投資者的錢全部集中起來,交由專業的經理人進行管理,投資於股票、債券、外匯等領域。”
而個人進行投資股票,對股票的聯系太多,反而不利於操作,這在軟件中就稱為耦合性過高。而有了基金之後,眾多的用戶只和基金打交道,關心基金的上漲和下跌就可以了,應此消除了過高的耦合性。
於是大鳥便讓小菜將股民炒股票的代碼寫出來看看。
股民炒股票代碼
#include <stdio.h>
// 股票1
class Stock1
{
public:
void Sell() // 賣股票
{
printf("股票1賣出 ");
}
void Buy() // 買股票
{
printf("股票1買入 ");
}
};
// 股票2
class Stock2
{
public:
void Sell() // 賣股票
{
printf("股票2賣出 ");
}
void Buy() // 買股票
{
printf("股票2買入 ");
}
};
// 股票3
class Stock3
{
public:
void Sell() // 賣股票
{
printf("股票3賣出 ");
}
void Buy() // 買股票
{
printf("股票3買入 ");
}
};
// 國債1
class NationalDebt1
{
public:
void Sell() // 賣國債
{
printf("國債賣出 ");
}
void Buy() // 買國債
{
printf("國債買入 ");
}
};
// 房地產1
class Realty1
{
public:
void Sell() // 賣房地產
{
printf("房地產賣出 ");
}
void Buy() // 買房地產
{
printf("房地產買入 ");
}
};
int main()
{
Stock1* gu1 = new Stock1();
Stock2* gu2 = new Stock2();
Stock3* gu3 = new Stock3();
NationalDebt1* nd1 = new NationalDebt1();
Realty1* rt1 = new Realty1();
gu1->Buy();
gu2->Buy();
gu3->Buy();
nd1->Buy();
rt1->Buy();
gu1->Sell();
gu2->Sell();
gu3->Sell();
nd1->Sell();
rt1->Sell();
delete gu1;
delete gu2;
delete gu3;
delete nd1;
delete rt1;
return 0;
}
大鳥看後答到:“很好,如果我們現在增加基金類,將如何做?”
外觀模式
為子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
實現方式(UML類圖)
實現代碼
#include <stdio.h>
// 股票1
class Stock1
{
public:
void Sell() // 賣股票
{
printf("股票1賣出 ");
}
void Buy() // 買股票
{
printf("股票1買入 ");
}
};
// 股票2
class Stock2
{
public:
void Sell() // 賣股票
{
printf("股票2賣出 ");
}
void Buy() // 買股票
{
printf("股票2買入 ");
}
};
// 股票3
class Stock3
{
public:
void Sell() // 賣股票
{
printf("股票3賣出 ");
}
void Buy() // 買股票
{
printf("股票3買入 ");