コンポジション/アグリゲーション再利用の原則CAPR、コンポジション/アグリゲーションを使用するようにし、クラス継承を使用しないようにする
集約は弱い所有関係を表します。これは、AオブジェクトにBオブジェクトを含めることができるが、BオブジェクトはAオブジェクトの一部ではないことを反映しています。構成は、部分と全体の間の厳密な関係を反映する強い所有関係です。 、一部および全体的なライフサイクルは同じです。
構成/集約の再利用の原則の利点は、オブジェクトの構成/集約に優先順位を付けることで、各クラスをカプセル化して単一のタスクに集中させることができるため、クラスとクラスの継承階層が小さくなり、成長する可能性が低くなることです。制御不能な巨大なものに。
ブリッジモードブリッジは、抽象部分をその実現部分から分離して、それらを独立して変更できるようにします。
抽象クラスがその派生クラスから分離されているわけではありません。意味がないからです。実装とは、独自のオブジェクトを実装するために使用される抽象クラスとその派生クラスを指します。
//实现类
abstract public class Implementor {
public abstract void Operation();
}
public class ConcreteImplementorA extends Implementor{
@Override
public void Operation() {
System.out.println("具体实现A的执行方法");
}
}
public class ConcreteImplementorB extends Implementor{
@Override
public void Operation() {
System.out.println("具体实现B的执行方法");
}
}
//抽象类
public class Abstraction {
protected Implementor implementor;
public void SetImplementor(Implementor implementor) {
this.implementor = implementor;
}
public void Operation() {
implementor.Operation();
}
}
public class RefinedAbstraction extends Abstraction {
@Override
public void Operation() {
super.Operation();
}
public static void main(String[] args) {
Abstraction abstraction = new Abstraction();
abstraction.SetImplementor(new ConcreteImplementorA());
abstraction.Operation();
abstraction.SetImplementor(new ConcreteImplementorB());
abstraction.Operation();
}
}
出力:
具体实现A的执行方法
具体实现B的执行方法