我最近有一段時間來重構一箇舊的個人項目,我想用它來學習如何最好地處理這種類。php - 用對象組合重構一個類
問題是我的課(項目)有兩個性別與它相關聯(將來可能更像一個項目的海報和項目的帽子/配件),每個性別使用幾乎相同的方法獲取和設置關於它們的東西(get_productImage,set_price等)。
我想重構類,以便不用每個函數的男性和女性副本,我可以讓代碼寫一次,並使用它兩次(或更多)。這是(一個非常簡單的例子)我到目前爲止:
class Item
{
public $ID, $displayDate;
public $male, $female;
public function __construct($ID)
{
//Fancy code to initialize stuff like $displayDate
$male = new Gender('male', $ID, $displayDate);
$female = new Gender('female', $ID, $displayDate);
}
}
class Gender
{
private $ID, $displayDate;
public function get_currentPrice()
{
//The current price of the gender changes based on the display date vs the current date and then adjusts the price accordingly and returns it.
}
}
有沒有一種方法,我可以重新寫這個更好?我的另一個問題是,顯示日期可以(也將會)改變和洗牌很多,所以對它的任何改變都需要傳播到性別課上,這也將使這一個巨大的混亂...
如果有幫助,我使用的是PHP 5.4,所以任何新增加的東西都可以在這裏使用。
你不能使用繼承 – Dave 2013-04-26 12:47:10
@Dave我不想繼承的原因是我真的想要封裝不同類型的項目的一個類。項目中的大部分內容都是相同的,並且會半頻繁地更改,所以我寧願在一個地方更改它,而不是在兩個擴展類中更改它。 – Klathmon 2013-04-26 12:53:59
如何創建一個存儲子對象及其關係實例的容器類。所以你會有班級$ useritems,它擁有哪些$ items和哪些$ gender被選擇和關聯。或者也許你可以用一個列表來保存關係? – Dave 2013-04-26 13:02:48