私はPlane
というクラスを持っています。データベースのサブクラスを扱うのに最適なデザインですか?
class Plane {
private int _planeId;
public int getModel() { }
public int getNumberOfPassengers() {}
}
そしてI平面に依存し、それにいくつかのロジックを追加しPlaneServiceと呼ばれる別のクラス、
class PlaneService {
private Plane _plane;
public PlaneService(Plane _plane) {
this._plane = _plane;
}
public void validdatePlane(int planeId) {
fetch plane from planeId from db.
if (plane.getNumberOfPassengers() is in range of {100 to 300})
plane is valid.
}
}
しかし、今、新たな要件が入って来:飛行機は、戦闘機をサポートするように拡張されなければなりません。したがって、新しいデザインは次のようになります。
class Plane {
private int _planeId;
public int getModel() { }
}
class PassengerPlane extends Plane {
public int getNumberOfPassengers() {}
}
class FigherJet extends Plane {
public boolean isCommissioned() {}
}
私の質問は、どのようにして 'PlaneSvc'をOOP方法で設計することができますか?良いデザインパターンはありますか?
は現在、私のコードは次のようになります。
class PlaneService {
private Plane _plane;
public PlaneService(Plane _plane) {
this._plane = _plane;
}
public void validdatePlane(int planeId) {
fetch CommercialPlane from planeId from db.
if (commericialPlaneObject != null) {
if (plane.getNumberOfPassengers() is in range of {100 to 300})
plane is valid.
}
fetch FighterPlaneObject from planeId from db.
if (FighterPlaneObject != null) {
if (fighterplane.isCommissioned()) {
return validPlane;
}
}
}
}
私は確信しているが、このような場合に対処するためのいくつかのデザインパターンがあります。 if-elseに対するより洗練されたアプローチを理解する必要があります。
[いいえ答えを書くには?](http://stackoverflow.com/help/how-to-answer):[...] ***リンクのコンテキストを提供する*** - *外部のリソースが奨励されますが、あなたの仲間のユーザーが何であるか、なぜそれがあるのかを知るために、リンクの周りに文脈を追加してください。*** ***重要なリンクの最も関連性の高い部分を常に引用します。 *** [...] – BackSlash
最初に質問に答えて編集する方法、これは私が推測するより良いガイドです! – ddarellis