読者です 読者をやめる 読者になる 読者になる

The Stable Abstractions Principle (SAP) 安定抽象概念原則


安定抽象概念原則とは

パッケージの安定度を最大にするには、抽象度を最大にする必要があり、不安定なパッケージは具象でなければならない。パッケージの抽象はその安定性と比例するべきである。

Packages that are maximally stable should be maximally abstract. Instable packages should be concrete. The abstraction of a package should be in proportion to its stability.


安定したパッケージは抽象パッケージでなければならない。

Stable packages should be abstract packages.[by Martin]

内容

パッケージの依存関係は、抽象度が高いパッケージへと向かうべき、ということで SAP と SDP は Dependency Inversion Principleのパッケージ版となります。
パッケージの安定度を高めるには、抽象的でなくてはならず、一方、不安定なパッケージは具体的でなくてはならない。パッケージの抽象度を高めれば その安定度も高くなる。その逆もまたしかりと。

抽象クラスやインターフェイスは、その派生クラスによって振る舞いが拡張されます。これは抽象クラスやインターフェイスがその派生クラスより安定していることを示しています。つまり、安定したパッケージを構成するためは、パッケージ内での抽象クラスやインターフェイスの割合を高めればよいことになります。さらに、これらの抽象クラスやインターフェイスに依存する派生クラスをまとめて別のパッケージに配置すれば、そのパッケージは不安定なパッケージとなり、安定したパッケージに依存することになります。結果として自然に先の「安定依存の原則」に従うことになります。