대화 디자인 모델 독서 노트의 간단한 공장 모델

1933 단어

단순 공장 모드란 무엇입니까?


다른 클래스를 만드는 실례를 전문적으로 정의하는데, 만들어진 실례는 보통 공통된 부류를 가지고 있다.그것은 정적 공장 방법 모델이라고도 부르며 클래스의 창설형 모델에 속한다.

장면 사용:

  • 서로 다른 타입 처리에 따라 서로 다른 논리를 처리해야 하는 곳에서 모두 사용할 수 있다(예를 들어 생방송에서 같은 메시지가 서로 다른 메시지 유형이 있고 서로 다른 처리 방식을 만들어야 한다).
  • if-else(즉 effectivejava에서 말한 라벨 클래스를 대체하고 각종if-else가 가득하다)를 대체한다. 수요가 변경될 때if-else의 내용을 변경해야 하기 때문에 확장성이 떨어진다. 간단한 공장 모델은 처리 방식을 인터페이스로 추상화하고 공장 내부 처리를 논리로 바꾸며 변경할 때case와 새로운 클래스만 추가하면 원래의 논리를 수정하지 않는다.

  • Effective 4장 클래스 및 인터페이스 참조
    클래스 계층이 태그 클래스보다 우수함

    예를 들면 다음과 같습니다.


    가감승제의 알고리즘을 실현하기 위해 계산기를 만들어야 한다
    다음은 단순 공장 모델 실현이다
    public class FactoryDesign {
      public Operation createOperation(Operator operator) {//            Android   @IntDef
        Operation operation = null;
        switch (operator) {
          case ADD:
            operation = new AddOperation();
            break;
          case SUB:
            operation = new SubOperation();
            break;
          case MUL:
            operation = new MulOperation();
            break;
          case DIV:
            operation = new DivOperation();
            break;
        }
        return operation;
      }
    
      public enum Operator {
        ADD,
        SUB,
        MUL,
        DIV;
      }
    }
    

    프로젝트의 적용:

  • 생방송 중 메시지 목록: 메시지가 다른 타입이 서로 다른 처리 논리와 양식에 대응(경고, 채팅, 전역 방송, 선물......)
  • 게임 오픈: 게임 ID가 다른 게임에 대응하는fragment
  • 메시지 전송, 서로 다른 메시지 유형에 따라 다른 처리를 한다(앱 첫 페이지 열기, H5 점프, 개인 홈페이지 점프)
  • 사용 방법:

  • 공공 인터페이스를 만들고 각 실례의 일반적인 처리 방법을 추출한다.
  • 각 실례를 만들어 이 인터페이스를 계승하고 각자의 처리 논리를 실현한다.
  • 공장 클래스를 만들고 실례를 만드는 방법을 제공하며 클라이언트가 유형 파라미터를 전송하고 공장 클래스는 구체적인 유형에 따라 서로 다른 실례를 만든다.

  • 이점:

  • 새로운 유형을 추가하려면 새로운 실례류를 추가하면 된다. 공장은 구체적인 실현 세부 사항을 봉인하고 논리가 명확하다
  • 책임 분리는 단일 직책 원칙에 부합되고 후기의 확장성이 강하다.

  • 단점:

  • 공장류의 직책이 너무 커서 매번 새로운 유형을 추가할 때마다 공장류를 수정해야 하는데 개폐원칙(확장개방, 수정폐쇄)에 부합되지 않는다
  • 유형이 많을 때 공장류가 범람하여 관리하기 어렵다
  • 좋은 웹페이지 즐겨찾기