この記事を読むのに必要な時間:およそ 0.5 分
お詫びと訂正(正誤表)
本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。
P.13
P.18
P.22
誤 |
“Reuse-Release Equivalent Principle(REP)” |
正 |
“Reuse-Release Equivalence Principle(REP)” |
P.25
P.28
誤 |
閉鎖性共通の原則(CCP)加えて |
正 |
閉鎖性共通の原則(CCP)に加えて |
P.44
P.53
P.58
P.66
P.70
P.73
誤 |
図4-7 articlePreseneter:ArticlePreseneter |
正 |
articlePresenter:ArticlePresenter |
P.74 図4-9
P.74 図4-9
誤 |
visualised |
正 |
visualized |
P.80 図5-1
P.80 図5-1
誤 |
subscrbe() |
正 |
subscribe() |
※UML図の矢印の頭を取る
P.81
誤 |
Subscrbe() |
正 |
subscribe() |
※UML図の矢印の頭を取る
P.83 図5-4
誤 |
DatebasedriverInterface |
正 |
DatebaseDriverInterface |
P.84
誤 |
“Open Close Principle(OCP)” |
正 |
“Open Closed Principle(OCP)” |
P.93
P.93 リスト5-12
P.93 リスト5-13
P.94 リスト5-14
P.94 リスト5-14
P.97
誤 |
“Intereface Seperation Principle()” |
正 |
“Intereface Segregation Principle()” |
P.98 リスト5-17
P.98 リスト5-17
P.98 リスト5-17
P.98 リスト5-17
P.98 リスト5-18
P.98 リスト5-18
P.99 リスト5-19
P.99 リスト5-19
P.99 リスト5-19
P.99 リスト5-19
P.119
P.125
誤 |
TeatCaseクラス |
正 |
TestCaseクラス |
P.134
誤 |
willretuen() |
正 |
willreturn() |
P.142
誤 |
テストと実装はこうなります |
正 |
テストとコードを書く手順は割愛しますが、この進め方でいくと実装はこうなります |
P.155 リスト6-38
P.155 リスト6-39
P.160
P.171
P.172
P.176
P.106
P.199
誤 |
リスト8-3 getIterationの省略 |
正 |
リスト8-3 getIterator()の省略 |
P.200
P.202 リスト8-7
P.203
誤 |
RequestHandlerInterafce |
正 |
RequestHandlerInterface< |
P.203 リスト8-9
P.204 リスト8-9
P.204 リスト8-9
P.207
誤 |
PrizeItemInterafceとしましょう |
正 |
PrizeItemInterfaceとしましょう |
P.207 リスト8-10
P.207 リスト8-11
P.208 リスト8-11
P.209 リスト8-12
P.210 リスト8-13
P.212
誤 |
PrizeItemInterafce |
正 |
PrizeItemInterface |
P.220
誤 |
createAnimal()メソッド |
正 |
createPet()メソッド |
P.231 リスト8-32
P.232 リスト8-32
P.232 リスト8-33
P.233 リスト8-33
P.233 リスト8-33
P.234 リスト8-34
P.234 リスト8-34
P.234 リスト8-34
P.235 リスト8-36
P.237 リスト8-37
P.237
誤 |
MailerInterafce |
正 |
MailerInterface |
P.237 リスト8-38
P.241 リスト8-41
P.242
P.247 図8-18
P.247 図8-18
P.247 図8-18
P.249 リスト8-46
P.262 リスト8-55
P.263 リスト8-55
P.273
P.297
P.307
誤 |
Clear Craftmanship |
正 |
Clean Craftsmanship |
P.xxiv
誤 |
パッケージ原則を支えるためのに |
正 |
パッケージ原則を支えるために |
「の」が不要です。
P.9
誤 |
依存の実動作に違いが起きていることもあるれば |
正 |
依存の実動作に違いが起きていることもあれば |
「る」が不要です。
P.49 ▼リスト3-7 多態性を活用したロギングのオンオフ コメント文
「o」が不要です。
P.138
誤 |
▼リスト6-13 src/core/NumberConverter.php |
正 |
▼リスト6-13 src/Core/NumberConverter.php |
誤 |
▼リスト6-14 tests/core/NumberConverterTest.php |
正 |
▼リスト6-14 tests/Core/NumberConverterTest.php |
P.147
誤 |
▼リスト6-27 src/core/ReplaceRuleInterface.php(初案) |
正 |
▼リスト6-27 src/Core/ReplaceRuleInterface.php(初案) |
P.161
誤 |
▼リスト6-44 src/core/ReplaceRuleInterface.php(第2案) |
正 |
▼リスト6-44 src/Core/ReplaceRuleInterface.php(第2案) |
P.190
誤 |
▼リスト7-19 config/services/yaml(最適化版) |
正 |
▼リスト7-19 config/services.yaml(最適化版) |
P.234 ▼リスト8-36 Mediatorのコードのミスページ
誤 |
public function notifyActivity()
|
正 |
public function notifyActivityDone()
|
P.253 ▼リスト8-50 Strategy パターンによる実現方法
誤 |
interface CalcurationStrategyInterface
{
public function validate(array $vars): bool;
public function calcurate(array $vars): float;
}
class Expression implements ExpressionInterface
{
protected ?array $vars = null;
protected ?CalcurationStrategyInterface $calcurationStrategy = null;
public function setCalcurationStrategy(
CalcurationStrategyInterface $strategy
): void {
$this->calcurationStrategy = $strategy;
}
public function setVariables(array $vars): void {
if ($this->calcurationStrategy->validate($vars)) {
throw new InvalidArgumentException();
}
$this->vars = $vars;
}
public function evaluate(): float
{
if ($this->vars === null || $this->calcalcurationStrategy === null) {
throw new LogicException();
}
return $this->calcurationStrategy->calcurate($this->vars);
}
}
class PlusCalcurationStrategy implements CalcurationStrategyInterface
{
public function validate(array $vars): bool
{
return count($vars) === 2;
}
public function calcurate(array $vars): float
{
return $vars[0] + $vars[1];
}
}
//他にminusCulculationStrategyもある
$expression = new Expression();
$expression->setCalcurationStrategy(new PlusCalcurationStrategy());
// ExpressionInterfaceとして使う
$expression->setVariables([1.1, 2.2]);
echo $expression->evaluate(); // 3.3
|
正 |
interface CalculationStrategyInterface
{
public function validate(array $vars): bool;
public function calculate(array $vars): float;
}
class Expression implements ExpressionInterface
{
protected ?array $vars = null;
protected ?CalculationStrategyInterface $CalculationStrategy = null;
public function setCalculationStrategy(
CalculationStrategyInterface $strategy
): void {
$this->CalculationStrategy = $strategy;
}
public function setVariables(array $vars): void {
if ($this->CalculationStrategy->validate($vars)) {
throw new InvalidArgumentException();
}
$this->vars = $vars;
}
public function evaluate(): float
{
if ($this->vars === null || $this->calCalculationStrategy === null) {
throw new LogicException();
}
return $this->CalculationStrategy->calculate($this->vars);
}
}
class PlusCalculationStrategy implements CalculationStrategyInterface
{
public function validate(array $vars): bool
{
return count($vars) === 2;
}
public function calculate(array $vars): float
{
return $vars[0] + $vars[1];
}
}
//他にminusCulculationStrategyもある
$expression = new Expression();
$expression->setCalculationStrategy(new PlusCalculationStrategy());
// ExpressionInterfaceとして使う
$expression->setVariables([1.1, 2.2]);
echo $expression->evaluate(); // 3.3
|
P.254 ▼図8-20 Strategyパターンによる式 図の中にある文字の修正
誤 |
CalcurationStrategyInterface |
正 |
CalculationStrategyInterface |
誤 |
PlusCalcurationStrategy |
正 |
PlusCalculationStrategy |
誤 |
MinusCalcurationStrategy |
正 |
MinusCalculationStrategy |
P.255 9行目
誤 |
calcurate() |
正 |
calculate() |
P.284
誤 |
モデル駆動設計(MDD:Make Driven Design) |
正 |
モデル駆動設計(MDD:Model Driven Design) |