質問編集履歴
1
質問の意図を明確にしてみました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
汎用クラスの
|
1
|
+
汎用クラスの生成はどこがすべき?
|
test
CHANGED
@@ -12,9 +12,9 @@
|
|
12
12
|
|
13
13
|
|
14
14
|
|
15
|
-
**その場合、
|
15
|
+
**その場合、ArrayConverterを使用するクラスは**
|
16
16
|
|
17
|
-
**ど
|
17
|
+
**ArrayConverterの生成について、どこの責任と捉えるべきなのでしょうか。**
|
18
18
|
|
19
19
|
|
20
20
|
|
@@ -58,6 +58,10 @@
|
|
58
58
|
|
59
59
|
```
|
60
60
|
|
61
|
+
**ArrayConverterの生成の責任はHogeには無い(生成すべきではない)と考え、**
|
62
|
+
|
63
|
+
**Hogeは、ArrayConverterを使用する事をコンストラクタで宣言だけすべきと考えました。**
|
64
|
+
|
61
65
|
テストもできるので、無難な設計と考えています。
|
62
66
|
|
63
67
|
|
@@ -68,13 +72,13 @@
|
|
68
72
|
|
69
73
|
|
70
74
|
|
71
|
-
|
75
|
+
感覚的には、(実際にはできませんが)PHPの標準関数を使用するからといって
|
72
76
|
|
73
|
-
|
77
|
+
コンストラクタの引数に標準関数を並べるような感覚でして、
|
74
78
|
|
75
79
|
**似たようなクラスが増えていった場合、**
|
76
80
|
|
77
|
-
**コンストラクタの引数が多くなりすぎるのでは?と思っています。
|
81
|
+
**コンストラクタの引数が多くなりすぎるのでは?**と思っています。
|
78
82
|
|
79
83
|
|
80
84
|
|
@@ -120,19 +124,19 @@
|
|
120
124
|
|
121
125
|
```
|
122
126
|
|
127
|
+
**ArrayConverterのような汎用クラスであれば、**
|
128
|
+
|
129
|
+
**標準関数と同じように扱いコンストラクタを通じた使用の宣言は必要なく、**
|
130
|
+
|
131
|
+
**Hogeに生成の責任がある(というより自由に生成してよい)と考えました。**
|
132
|
+
|
123
|
-
|
133
|
+
直感的で分かりやすいと考えています。
|
124
134
|
|
125
135
|
|
126
136
|
|
127
|
-
|
137
|
+
しかし、どちらの場合もHogeとArrayConverterの関係が密になりすぎて、
|
128
138
|
|
129
|
-
|
139
|
+
ArrayConverterをダミーに差し替えるといった事が出来なくなるのが心配です。
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
さらにnewの場合に至っては、ArrayConverterを使用したいだけなのに、
|
134
|
-
|
135
|
-
生成までするというのは仕事しすぎ(生成はファクトリが行うべき)かと思っています。
|
136
140
|
|
137
141
|
======================================
|
138
142
|
|