Ruby 디자인 모델 프로 그래 밍 에서 외관 모델 에 대한 응용 사례 분석

3744 단어 Ruby디자인 모드
외관 모드 는 무엇 입 니까?
    외관 모드 는 서브 시스템 의 서로 다른 인터페이스 에 통 일 된 인 터 페 이 스 를 제공한다.외관 은 상부 인 터 페 이 스 를 정의 하고 복잡 도와 숨겨 진 서브 시스템 간 의 통신 과 의존 관 계 를 낮 추어 서브 시스템 을 더욱 쉽게 사용 하도록 한다.
    예 를 들 어 서브 시스템 에는 서로 다른 종류 가 있 는데 그 중 일 부 는 서로 의존한다.이것 은 클 라 이언 트 로 하여 금 서브 시스템 의 종 류 를 사용 하기 어렵 게 한다.왜냐하면 클 라 이언 트 는 모든 종 류 를 알 아야 하기 때문이다.외관 이 전체 서브 시스템 의 입구 까지 생 겼 다.일부 클 라 이언 트 는 서브 시스템 의 일부 기본 적 인 행위 만 필요 하고 서브 시스템 의 유형 에 대해 많은 맞 춤 형 제작 을 하지 않 으 며 외관 은 이러한 클 라 이언 트 에 게 간단 한 인 터 페 이 스 를 제공 합 니 다.일부 서브 시스템 의 클래스 에서 더 많은 행 위 를 맞 추 는 클 라 이언 트 만 외관 뒤의 디 테 일 에 관심 을 가 질 수 있 습 니 다.
    외관 모드:시스템 의 인터페이스 에 통 일 된 인 터 페 이 스 를 제공 합 니 다.외관 은 하위 시스템 이 쉽게 사용 할 수 있 도록 고 층 인 터 페 이 스 를 정의 합 니 다.
외관 모드 는 언제 사용 합 니까?
  •     서브 시스템 이 점점 복잡 해 지고 있다.응용 모델 의 과정 에서 여러 가지 유형 을 연기 할 수 있 고 외관 을 사용 하여 이 서브 시스템 에 비교적 간단 한 인 터 페 이 스 를 제공 할 수 있다
  •     외관 으로 서브 시스템 을 레이 어 링 할 수 있 습 니 다.각 하위 시스템 등급 마다 입구 점 으로 외관 이 있 습 니 다.외관 을 통 해 통신 을 하 게 하면 의존 관 계 를 간소화 할 수 있다
  • Ruby 버 전 외관 모드 적용
    필요:
    개인 투자 자가 주식 을 매매 하 다.
    초기 코드:
    
    # -*- encoding: utf-8 -*-
    
    #  1
    class Stock1
      def buy
        puts '  1  '
      end
      
      def sell
        puts '  1  '
      end
    end
    
    #  2
    class Stock2
      def buy
        puts '  2  '
      end
      
      def sell
        puts '  2  '
      end
    end
    
    #  3
    class Stock3
      def buy
        puts '  3  '
      end
      
      def sell
        puts '  3  '
      end
    end
    
    #  1
    class NationalDebt1
      def buy
        puts '  1  '
      end
      
      def sell
        puts '  1  '
      end
    end
    
    #   1
    class Realty1
      def buy
        puts '   1  '
      end
      
      def sell
        puts '   1  '
      end
    end
    s1 = Stock1.new
    s2 = Stock2.new
    s3 = Stock3.new
    n1 = NationalDebt1.new
    r1 = Realty1.new
    
    s1.buy
    s2.buy
    s3.buy
    n1.buy
    r1.buy
    
    s1.sell
    s2.sell
    s3.sell
    n1.sell
    r1.sell
    
    
    질문:
    사용자 가 주식,국채,부동산 상황 을 알 아야 하고 이런 항목 의 구체 적 인 구 매 와 판매 에 참여 해 야 하 며 결합 성 이 매우 높다 는 것 을 알 수 있다.
    개선 코드
    
    # -*- encoding: utf-8 -*-
    
    #  1
    class Stock1
      def buy
        puts '  1  '
      end
      
      def sell
        puts '  1  '
      end
    end
    
    #  2
    class Stock2
      def buy
        puts '  2  '
      end
      
      def sell
        puts '  2  '
      end
    end
    
    #  3
    class Stock3
      def buy
        puts '  3  '
      end
      
      def sell
        puts '  3  '
      end
    end
    
    #  1
    class NationalDebt1
      def buy
        puts '  1  '
      end
      
      def sell
        puts '  1  '
      end
    end
    
    #   1
    class Realty1
      def buy
        puts '   1  '
      end
      
      def sell
        puts '   1  '
      end
    end
    
    #   
    class Fund
      attr_accessor s1, s2, s3, n1, r1
      
      def initialize
        s1 = Stock1.new
        s2 = Stock2.new
        s3 = Stock3.new
        n1 = NationalDebt1.new
        r1 = Realty1.new
      end
      
      def buy
        s1.buy
        s2.buy
        s3.buy
        n1.buy
        r1.buy
      end
      
      def sell
        s1.sell
        s2.sell
        s3.sell
        n1.sell
        r1.sell
      end
    end
    
    f1 = Fund.new
    f1.buy
    f1.sell
    
    
    장점:사용 자 는 각종 주식 을 이해 할 필요 가 없고 펀드 를 팔면 된다.

    좋은 웹페이지 즐겨찾기