Я ищу помощь в определении этого шаблона проектирования и изучении «типичного» словаря, который он использует:
Я работаю над проектом на PHP и создал тонкий слой ORM, который сохраняет общие объекты в базу данных и из нее. Есть два класса, которые делают работу:
- "my_object" - это в основном контейнер для различных типов данных. После создания этот объект может сохранить себя в БД.
- «my_object_manager» используется для управления набором объектов, например, если вы хотите получить многие из них и выполнить итерации по ним.
В качестве упрощенного примера вы можете сделать что-то вроде:
$post = new my_object('post');
$post->title = 'foo';
$post->body = 'bar';
$post->author = 'baz';
... а вы, если хотите загрузить кучу постов, можете сделать что-то вроде:
$posts = new my_object_manager('post');
$somePosts = $posts->getBy('author','baz');
foreach( $somePosts as $aPost ) {
...loop stuff here...
}
Итак, мой вопрос заключается в следующем: в определении класса для my_object_manager мне нужно сохранить свойство, которое определяет, какой тип объекта управляется. Это выглядит примерно так:
class my_object_manager {
protected $theKindOfObjectThatThisManages;
function __construct($whatToManage) {
$this->theKindOfObjectThisManages = $whatToManage;
}
}
Теперь, прости меня за то, что я не знаю такого рода базовых вещей, но я самоучка и довольно ограниченный словарный запас программирования. Я уверен, что этот тип дизайна является обычным явлением, но я не смог понять, как он называется.
Я пытаюсь написать код, который могут прочесть и понять другие программисты, поэтому мой реальный вопрос: если бы вы читали этот код, что бы вы ожидали, что будет вызван «$ theKindOfObjectThatThisManages»? Как называется этот шаблон разработки программы и как вы называете этот тип объекта, если хотите, чтобы другие программисты знали, что он делает?
Наконец, появился редактор вопросов и сказал, что этот вопрос выглядит субъективно и, вероятно, будет закрыт. Я надеюсь, что этот вопрос, на самом деле, подходит для переполнения стека, но если нет, где я могу задать этот вопрос и получить ответ?
Спасибо!