Шаблон компоновщика улучшает разделение - ваш Продукт может быть интерфейсом, и единственный класс, который знает о реализации (или реализациях, в некоторых случаях), это компоновщик. Если разработчик также реализует интерфейс, вы можете добавить его в свой код, чтобы еще больше увеличить развязку.
Эта развязка означает, что ваш код более удобен в обслуживании и его проще тестировать.
Следующее, кажется, подтверждает, что есть операторы сравнения для Класс DateTime:
dev:~# php
<?php
date_default_timezone_set('Europe/London');
$d1 = new DateTime('2008-08-03 14:52:10');
$d2 = new DateTime('2008-01-03 11:11:10');
var_dump($d1 == $d2);
var_dump($d1 > $d2);
var_dump($d1 < $d2);
?>
bool(false)
bool(true)
bool(false)
dev:~# php -v
PHP 5.2.6-1+lenny3 with Suhosin-Patch 0.9.6.2 (cli) (built: Apr 26 2009 20:09:03)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
dev:~#