質問編集履歴

1

質問の意図を明確にしてみました。

2015/10/09 00:42

投稿

i50
i50

スコア227

test CHANGED
@@ -1 +1 @@
1
- 汎用クラスの使われ方
1
+ 汎用クラスの生成はどこがすべき?
test CHANGED
@@ -12,9 +12,9 @@
12
12
 
13
13
 
14
14
 
15
- **その場合、このクラス(ArrayConverter)を使用するクラスは**
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
- **感覚的には、(実際にはできませんが)PHPの標準関数を使用するからといって**
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
- **しかし、どちらの場合もHogeとArrayConverterの関係が密になりすぎて、**
137
+ しかし、どちらの場合もHogeとArrayConverterの関係が密になりすぎて、
128
138
 
129
- **ArrayConverterをダミーに差し替えるといった事が出来なくなるのが心配です。**
139
+ ArrayConverterをダミーに差し替えるといった事が出来なくなるのが心配です。
130
-
131
-
132
-
133
- さらにnewの場合に至っては、ArrayConverterを使用したいだけなのに、
134
-
135
- 生成までするというのは仕事しすぎ(生成はファクトリが行うべき)かと思っています。
136
140
 
137
141
  ======================================
138
142