CRUD기능이 있는 Database 클래스에서 다음과 같이 remote와 local에 따라 getFirstData, isSameDataList를 사용하고 isExistData를 서로 공유해서 사용한다고 가정하자.만약 getFirstData의 작동방식을 바꾸기 위해 is
변경(확장)될 것과 변하지 않을 것을 구분한다.이 두 모듈이 만나는 지점에 추상화(추상클래스 or 인터페이스)를 정의한다.정의한 추상화에 의존하도록 코드를 작성 한다.Database의 이름에 따라서 처리를 다르게하는 DataLoader 클래스가 있다고 가정하자. 만약
다음과 같이 부모 클래스 Database를 상속하는 자식 클래스 LocalDatabase에서 create 함수를 오버라이딩해서 다음과 같이 수정했다고 가정하자.이때 Database에서 create한 데이터가 생성되었는지 확인하는 작업을 수행한다면 localDatabas
다음과 같이 LocalDatabase와 RemoteDatabase를 추상화하는 DB 인터페이스가 있다고 가정하자.해당 인터페이스에는 crud와 LocalDatabase에서만 사용할 isSameDataList, RemoteDatabase에서 사용하는 getFirstDat
다음과 같이 database를 가지는 Phone 클래스가 있고, createDatabase를 통해서 database에 data를 만든다고 가정하자. 이 경우 Phone 클래스를 인스턴스화할때 LocalDatabase에 의존성을 가지게 되고, createDatabase