回答編集履歴

5

略語説明補足

2022/01/27 06:25

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -2,12 +2,9 @@
2
2
  あと、ドメイン駆動設計 (DDD: Domain-Driven Design) も有効かと思います。
3
3
 
4
4
  > 1つめは、どのPlan子クラスも持っているプロパティが異なり、またそれに伴ってコンストラクタが異なるという点です。
5
-
6
- インタフェースの出番ですね。
7
-
8
5
  > これでは同じようにPlanクラスとして各Planを作成しようと思っていても、結局これらのPlanクラスを使用する側(例えばDatabaseからデータを抽出して各Planを作成するようなクラス)ではramen,beefBowl,healthConsultationの何を作るのかを何らかの方法を用いて判断しないといけません。なぜならどのPlanクラスを作成するかによって、コンストラクタに渡すものが異なるからです。
9
6
 
10
- ファクトリーパターンの出番ですね。
7
+ Factoryパターンの出番ですね。
11
8
 
12
9
  > 2つめに、プランCが、他のクラスが持っていないnextScheduleメソッドを持っている問題です。
13
10
  > これはUserのnextHealthConsultationScheduleメソッドで使用されます。ただプランCを契約していないUserにとって、nextHealthConsultationScheduleメソッドは全くいらないメソッドです。プランCを契約していないUserがこのメソッドを使用できるようなクラスの作り方でいいのでしょうか。何だか気持ち悪く感じます。

4

略語訂正

2022/01/27 06:03

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,5 +1,5 @@
1
1
  オブジェクト指向設計を学ぶといいですよ。SOLID原則, クリーンアーキテクチャ, デザインパターン など。
2
- あと、DDD (Domain-Driven Design) も有効かと思います。
2
+ あと、ドメイン駆動設計 (DDD: Domain-Driven Design) も有効かと思います。
3
3
 
4
4
  > 1つめは、どのPlan子クラスも持っているプロパティが異なり、またそれに伴ってコンストラクタが異なるという点です。
5
5
 

3

オプション処理の説明追記

2022/01/27 06:03

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,5 +1,5 @@
1
1
  オブジェクト指向設計を学ぶといいですよ。SOLID原則, クリーンアーキテクチャ, デザインパターン など。
2
- あと、DDD (Domain Driven Development) も有効かと思います。
2
+ あと、DDD (Domain-Driven Design) も有効かと思います。
3
3
 
4
4
  > 1つめは、どのPlan子クラスも持っているプロパティが異なり、またそれに伴ってコンストラクタが異なるという点です。
5
5
 

2

引用範囲修正

2022/01/27 05:59

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -12,5 +12,7 @@
12
12
  > 2つめに、プランCが、他のクラスが持っていないnextScheduleメソッドを持っている問題です。
13
13
  > これはUserのnextHealthConsultationScheduleメソッドで使用されます。ただプランCを契約していないUserにとって、nextHealthConsultationScheduleメソッドは全くいらないメソッドです。プランCを契約していないUserがこのメソッドを使用できるようなクラスの作り方でいいのでしょうか。何だか気持ち悪く感じます。
14
14
 
15
- 持っているか持っていないかに左右されないメソッドを作って、インタフェースに定義するといいです。
15
+ 持っているか持っていないかに左右されないメソッドを作るといいです。
16
+ どのプランにもオプションがあり、オプション処理の一環として内部からnextScheduleを呼び出せばいいと思います。
16
17
 
18
+

1

2022/01/27 05:56

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -10,7 +10,7 @@
10
10
  ファクトリーパターンの出番ですね。
11
11
 
12
12
  > 2つめに、プランCが、他のクラスが持っていないnextScheduleメソッドを持っている問題です。
13
- これはUserのnextHealthConsultationScheduleメソッドで使用されます。ただプランCを契約していないUserにとって、nextHealthConsultationScheduleメソッドは全くいらないメソッドです。プランCを契約していないUserがこのメソッドを使用できるようなクラスの作り方でいいのでしょうか。何だか気持ち悪く感じます。
13
+ > これはUserのnextHealthConsultationScheduleメソッドで使用されます。ただプランCを契約していないUserにとって、nextHealthConsultationScheduleメソッドは全くいらないメソッドです。プランCを契約していないUserがこのメソッドを使用できるようなクラスの作り方でいいのでしょうか。何だか気持ち悪く感じます。
14
14
 
15
15
  持っているか持っていないかに左右されないメソッドを作って、インタフェースに定義するといいです。
16
16