SequentialTaskHandlerクラス内にタスクが順次実行され、タスクの依存関係を明確に示しています。
順次的凝集を実行し、タスクが特定の順序で実行される必要がある場合に有用です。
<?php
class SequentialTaskHandler
{
public function task1()
{
// タスク1の処理
}
public function task2()
{
// タスク2の処理
}
public function task3()
{
// タスク3の処理
}
}
// 以下、タスクの順序で実行
$handler = new SequentialTaskHandler();
$handler->task1(); // タスク1を実行
$handler->task2(); // タスク2を実行
$handler->task3(); // タスク3を実行
逐次的凝集は高い凝集度の一つであり、特定のタスクが順番に実行される場合に適しています。
しかし、改善の余地がないわけではありません。
改善のポイントは、処理の依存関係をより明確にすることです。
逐次的凝集を改善するためには、以下のようなアプローチを考えることができます。
逐次的凝集が高い凝集度を持つ一方で、改善の余地がある場合もあります。
コードの理解、保守性、柔軟性を向上させるために、上記のアプローチを検討することが大切です。
この改善版では、各タスク(TaskA, TaskB, TaskC)がそれぞれ独立してクラスとして実装されています。
また、これらのタスクを実行するためのSequentialCoordinatorクラスが導入され、各タスクの依存関係を明確にし、柔軟性を向上させています。
タスクの実行はSequentialCoordinatorを介して行われます。
このような設計を採用することで、凝集度が高く、各タスクが独立性を持ちつつ順次実行されるコードが実現されます。
これにより、コードの理解や保守性が向上し、柔軟性も増します。
<?php
class TaskA
{
public function execute()
{
// タスクAの処理
}
}
<?php
class TaskB
{
public function execute()
{
// タスクBの処理
}
}
<?php
class TaskC
{
public function execute()
{
// タスクCの処理
}
}
<?php
class SequentialCoordinator
{
private $tasks = [];
public function addTask($task)
{
$this->tasks[] = $task;
}
public function executeTasks()
{
foreach ($this->tasks as $task) {
$task->execute();
}
}
}
<?php
$coordinator = new SequentialCoordinator();
$coordinator->addTask(new TaskA());
$coordinator->addTask(new TaskB());
$coordinator->addTask(new TaskC());
$coordinator->executeTasks();