[オブジェクト向けプログラミング入門-インフラストラクチャ]継承ではなくアセンブリ


継承は、親の機能を利用して再利用および拡張する方法です.
→機能の継承による不具合

  • 親を変更できません
    親変更の影響は、階層に基づいて子に影響します.
    変更が正しくない場合、すべてのサブクラスが正常に動作しない可能性があります.

  • クラスの不要な成長

  • 誤用


  • 継承の欠点を解決→組み立てる


    くみたて

  • は、より複雑な機能
  • を提供するために複数のオブジェクトを組み合わせる.
  • 必要に応じてアセンブリまたはオブジェクト(通常のフィールドで他のオブジェクトを参照)
  • を作成/取得する.
    public class FlowController {
    	private Encryptor encryptor = new Encryptor(); // 필드로 조립
    
    	public void process() {
    		...
    		byte[] encryptedData = encryptor.encrypt(data);
    		...
    	}
    }
    
    암호화 기능이 필요하다면 암호화 기능을 제공하는 클래스를 상속받아서 구현하는 것이 아니고
    필드로 객체를 참조하여 조립

    継承ではなくアセンブリ
  • を継承する前に、
  • がアセンブリできないかどうかを確認します.
  • が真のサブタイプである場合にのみ使用される