-変化する部分をカプセル化する -継承よりコンポジションを好む -実装に対してではなく、インターフェースに対してプログラミングする -クラスは拡張に対しては開かれた状態であるべきであるが、変更に対しては閉じた状態であるべきである(Open-Closed Principle:開放/閉鎖原則)