画像としてのSOLID

5642 ワード

SOLIDとは、対象に向かうと一度聞く用語ですでも再整理しないと忘れがちなので、簡単に絵でさっと見て思い出してもらえるようにこの本を書きました.

💡 SRP(single responsibility princple)


これは単一の責任原則であり、つまり1つのカテゴリが1つの責任しか負わないということです.
車のハンドルオブジェクトがあるとします.ハンドルは車の方向を決めるだけで、他の役割はありません.
ハンドルにアクセルブレーキなどの他の機能がある場合は、SRPを遵守していません.

💡 OCP(Open/Closed Principle)


これは、展開を開く必要があり、変更を閉じる必要があることを意味します.
簡単に言えば、ロール(インタフェース)と実装(クラス)は、実装によって新しい機能(多形性)を追加する.

新しい機能が追加された場合は、既存のマウスに追加するのではなく、新しいマウスに適用することを考慮します.
interface mouse {
	void leftClick();
    void rightClick();
    void midClick();
}

class MxVerticalMouse implements mouse {
	public void leftClick() {
    	...
    }
    public void rightClick() {
    	...
    }
    public void midClick() {
    	...
    }
}

💡 LSP (Liskov substitution principle)


私たちはリスコフの置換原則と呼んでいます.
自動車を例にインタフェースを実装すると、Excel機能があります.私たちの原則は、アクセルを踏むのはもちろん前へ行かなければならないということです.私たちが考えているように、既定の規定に従います.

💡 ISP (Interface segregation principle)


インタフェース分離の原則.
1つのインタフェースは複数のインタフェースより良いです.これがISPです.
つまり、1台のコンピュータがあれば、CPUやメモリなどの詳細なインタフェースは、1つのコンピュータインタフェースよりも優れています.

💡 DIP (Dependency inversion principle)


いわゆる依存関係逆転の原則.
プログラマーは具体化ではなく抽象化に頼るべきだという言葉がある.簡単に言えば、これは実装クラスに依存せず、インタフェースに依存することを意味する.
interface Actor {
	...
}
class 원빈 implements Actor{
	...
}
class 공유 implements Actor{
	...
}

public static void main(String[] args) {
	Actor actor; // <- 인터페이스에 의존
    Actor actor = new 공유() // <- 구현체에 의존했기때문에 DIP 위반
}

インタフェースに依存している場合は、共有ではなくメタビンを使用できますが、上図の実装に依存している場合は、共有はステージングできません.