Tôi đang cố thiết kế đối tượng PHP (gọi là Incident_Collection
) sẽ giữ một bộ sưu tập các đối tượng khác, mỗi đối tượng này triển khai giao diện Incident
.chọn cơ sở dữ liệu cho tập hợp các đối tượng ngày
<?php
class Foo implements Incident {
protected $incident_date; //DateTime object
protected $prop1;
protected $prop2;
//etc
public function when(){ //required by Incident interface
return $this->incident_date;
}
}
?>
Lúc đầu, tôi figured tôi chỉ muốn làm cho tôi Incident_Collection
thực hiện IteratorAggregate
và lưu trữ các đối tượng cố trong một tài sản hàng loạt các bộ sưu tập:
<?php
class Incident_Collection implements IteratorAggregate {
protected $collection=array();
public function getIterator(){
return new ArrayIterator($this->collection);
}
public function sort(){
//sort by $incident->when() values in $this->collection
}
/*also __get($var), __set($var,$value), add(Incident $object), remove(Incident $object) and other functions*/
}
?>
Nhưng vì Incident
đối tượng có một trật tự tự nhiên, tôi nghĩ rằng có lẽ việc mở rộng một trong số SPL Data Structures có thể phù hợp/hiệu quả hơn. Nhưng cái nào? Tôi không rõ lắm về thời điểm sử dụng cấu trúc dữ liệu cụ thể.
Một nếp nhăn khác là có thể có các hạn chế đối với một số Incident_Collection
. Ví dụ, nếu có một đối tượng Person
người đã có một Incident_Collection
, có lẽ là hạn chế sau đây có thể áp dụng:
- chỉ 1
Birth
cố - nếu
Birth
tồn tại, nó phải là sự cố đầu tiên trong bộ sưu tập - chỉ có 1
Death
cố - nếu
Death
tồn tại, nó phải là sự cố mới nhất trong bộ sưu tập HS_Graduation
phải đến sauHS_Begin
Sẽ tốt hơn nếu bạn có chung một hạn chế Incident_Collection
chấp nhận một nhóm hạn chế từ chủ sở hữu của nó (ví dụ: Person
) hoặc được phân loại là Person_Incident_Collection
?
liên kết tuyệt vời. Cảm ơn! – dnagirl
Hình như Hàng đợi ưu tiên là anh chàng của tôi. Tôi đã suy nghĩ về mô hình Nhà nước và tự hỏi liệu nó có mạ vàng cây huệ không. Vui mừng khi biết suy nghĩ của bạn. – dnagirl
@dnagirl bạn được chào đón. Re State Pattern Tôi muốn đưa ra quyết định về việc liệu chủ sở hữu có thực sự là một trạng thái thực tế hay không (chỉ là một tham chiếu/liên kết) của IncidentCollection hoặc nếu nó là một SpecialCase. Nếu sau này, tôi sẽ không sử dụng nhà nước.Không chắc chắn làm thế nào để đặt rằng bất kỳ ít mờ. Lấy làm tiếc :) – Gordon