【发布时间】:2014-07-31 07:35:35
【问题描述】:
目前我正在编写一个面向对象的酒店应用程序来学习 OOP。 我之所以选择这个,是因为在我的书(O'Reilly 的 PHP 设计模式)中,他们编写了一家汽车租赁公司。 现在我已经完成了基本的业务逻辑,但我仍然有一些问题。
Hotel 类中有以下方法:
//All public functions, left it hhere cause of the length
checkOut( HotelRoom $room, DateTime $from, DateTime $to )
changeRoom( HotelRoom $oldRoom, HotelRoom $newRoom, HotelCustomer $customer, DateTime $from, DateTime $to)
checkOut( HotelRoom $room, DateTime $from, DateTime $to )
因此,对于我执行的每一步(预订、更改房间或结帐),我都必须将 HotelRoom 作为参数传递。每个房间都有一个ID和一个号码。
最好实现一个方法 addRoom(HotelRoom $room) 并将所有房间存储在受保护的属性 $rooms 数组中,然后只为方法传递 HotelRoom::$id 还是有更好的方法?
我对 OOP 比较陌生,现在只想知道什么是好的做法。
【问题讨论】:
-
您为什么要这样做?它能解决什么问题?
-
@SergioTulentsev 我不认为有问题需要解决,只是增强代码 - 还是我看错了?
-
最好不要使用受保护的数组,因为您将根据其 ID 搜索每个调用适当的 HotelRoom ...在我看来,直接传递对象是正确的方法
-
@hd.: 是的,我的意思是,为什么要为了更改而更改代码?显然必须有某种胜利。在这里我什么也没看到。
-
@SergioTulentsev 啊,好的。我现在明白你的逻辑了:)