디자인 모델: 교량

드라마가 진행될수록 이름이 이상해진다?
다리형
우리는 다리를 건설하는 것이 아니라 은유이다.
오늘 당신은 다음과 같이 공부할 것입니다.
  • 브리지 모델 배후의 핵심 개념
  • 브리지 모드 구현 방법
  • 어떻게 교량 모델을 통해 기회를 식별합니까
  • 브리지 모델의 장점과 단점
  • 정의


    브리지 모드는 다음과 같이 모듈 간에 ASCII 브리지를 구축해야 함을 나타냅니다.

    농담!
    엄숙하게 말하면 브리지 모델은 추상과 실현의 분리를 제창한다.
    그런데 추상과 실현은 무슨 뜻인가요?
    좋아, 일을 더욱 간단하게 하기 위해서 예를 하나 보자.

    문제.


    아마존의 초기 모습을 상상해 보세요.
    그때 그들은 양장본만 팔았다.
    그들의 과정은 다음과 같을 수 있다.

    이것은 절대적으로 효과가 있다.
    근데 이건 좀 확실하지 않아요.
    만약 우리가 새 책 ActionBook 을 한 권 창작하고 인쇄본과 유성 도서로 출판하고 싶다면.
    우리는 두 개의 새로운 종류를 만들어야 한다.
  • ActionPrintBook
  • ActionAudioBook
  • 그런데 만약 우리가 이 책의 전자판을 출판하고 싶다면?
    우리는 다시 한 번 새로운 ActionDigitalBook 클래스를 만들어야 할 것이다.
    요컨대, 새 책마다 판본마다 최대 3개의 추가 종류를 만들어야 한다.
    또한 이 책을 수정하려면 여러 곳에서 수정해야 한다. 건조함 (자신을 반복하지 마라) 의 원칙을 깨뜨려야 한다.
    시간이 지날수록 일은 곧 엉망이 될 것이다.
    하지만 걱정하지 마세요. 이것이 바로 다리형의 하이라이트입니다.

    솔루션


    만약 우리가 이 과정들을 자세히 검사한다면, 유성 도서와 종이 도서 사이에는 어떤 차이가 있습니까?
    종이책은 한 무더기의 텍스트를 출력하고, 유성서는 오디오를 출력한다는 내용이 분명하다.
    우리의 첫 번째 단계는 내용과 도서류를 분리하는 것이다.
    컨텐츠 공급업체 인터페이스를 만들겠습니다.
    interface IBookContentProvider {
        public String[] getContent();
    } 
    
    class AutobiographyBookContentProvider implements IBookContentProvider {
    
        public String[] getContent(){
            return ["I was a boy", "now I'm not a boy"];
        }
    }
    
    class AutobiographyAudioBook implements AudioBook {
            IBookContentProvider contentProvider;
    
            public AutobiographyAudioBook(IBookContentProvider contentProvider){
                self.contentProvider = contentProvider;
            }
    
            public void publish(){
                String[] content = self.contentProvider.getContent()
    
                System.out.println("Published Book: " + content)
            }
    }
    
    여기서 우리가 무엇을 했는지 살펴보자.
  • 우선, 우리는 IBookContentProvider 인터페이스를 만들었는데 이 인터페이스는 본질적으로 내용을 얻는 방법getContent을 설명했다.
  • 그리고 우리는 첫 번째AutobiographyBookContentProvider라는 콘텐츠 공급자를 만들었는데 이것은 우리의 IBookContentProvider 인터페이스를 실현했다.
  • 마지막으로 우리는 구조 함수를 통해AutobiographyBookContentProviderAutobiographyAudioBook에 연결했다.
  • 지금 만약 우리가 새 책을 한 권 창작하고 싶다면, 우리는 새 책 내용 제공자를 만들고, 이를 우리의 도서 유형 (인쇄, 유성 도서, 디지털 등) 과 연결하면 된다
    이것은 교량 모델의 기본 전제다.
    그것은 계승이 아니라 조합을 제창한다.

    언제 이런 모드를 사용합니까?


  • 일부 기능을 가진 여러 변체의 단일 클래스를 결합시키려면 브리지 모드를 사용하십시오.학급이 클수록 복잡해진다.변화를 하기가 갈수록 어려워지면서 일이 갑자기 일어날 가능성이 높다.이것이 바로 브리지 모델의 유래로 이 거대한 단일 유형을 몇 가지 차원 구조로 나누는 것이다.모든 종류의 차원 구조의 코드를 독립적으로 변경하여 더욱 쉽게 사용하고 유지할 수 있습니다.

  • 하나의 클래스를 몇 개의 독립된 변체로 확장하려면 브리지 모드를 사용하십시오.브리지 모델은 유형을 차원 구조로 나누는 것을 제창한다.기본적으로 너는 혼합하여 조합할 수 있는 조합 블록을 창조할 수 있다.

  • 실행할 때 전환할 수 있도록 하려면 브리지를 사용하십시오.만약 이미 브리지 모드를 실현했다면, 실현을 바꾸기 쉽다.너는 네가 통과한 과정을 바꾸기만 하면 된다.
  • 이해득실


    모든 햇빛과 무지개가 아니다. 교량 모델의 장점과 단점을 되돌아보자.

    이익.

  • 플랫폼에 독립된 클래스와 응용을 창설한다.
  • 고객은 세부 사항을 모르고 추상적으로만 처리합니다.
  • 새로운 추상과 실현을 독립적으로 도입할 수 있습니다.
  • 추상적인 고급 논리와 실현된 세부 사항에 주목합니다.
  • 결점

  • 다양한 종류와 인터페이스를 추가했기 때문에 프로그램은 더욱 복잡해졌다.
  • 결론


    브리지 모드는 가장 유용한 디자인 모드 중 하나입니다. 작업과 애완동물 프로젝트에서 그 용도를 발견할 수 있을 거라고 믿습니다.마지막으로 궁금한 게 있는데 다리형을 써 본 적이 있습니까?만약 그렇다면 상황은 어떻습니까?후회했어?
    읽어주셔서 감사합니다!

    한층 더 읽다


    디자인 모델에 대한 정보를 더 알고 싶으시면 Diving into Design Patterns을 추천합니다.GoF북의 23가지 디자인 모델을 흥미롭고 흥미진진하게 설명한다.
    내가 추천한 또 다른 책은 Heads First Design Patterns: A Brain-Friendly Guide인데 재미있고 읽기 쉬운 해석이 있다.

    플러그


    트위터 팔로우 꼭 해주세요.
    또한 다음과 같은 내용을 보려면 내 블로그를 보십시오.
    https://softwareadventuring.com/

    좋은 웹페이지 즐겨찾기