디자인 모델 의 장식 모델 (Decorate Pattern)

장식 모델: 동태 적 으로 한 대상 에 게 추가 적 인 직책 을 추가 하면 기능 을 증가 하 는 데 있어 장식 모델 (Decorate Pattern) 은 하위 클래스 를 생 성 하 는 것 보다 더욱 유연 하 다.장식 모델 은 기 존의 기능 동태 에 더 많은 기능 을 추가 하 는 방식 이다. 시스템 이 새로운 기능 을 필요 로 할 때 낡은 유형 에 새로운 코드, 새로운 논 리 를 추가 하 는 것 이 아니 라 이렇게 하면 주요 유형의 복잡 도 를 증가 시 켰 고 장식 모델 은 좋 은 해결 방안 을 제공 했다. 그 는 모든 장식 기능 을 단독 유형 에 두 었 다.장식 할 대상 을 포장 하 라.
이렇게 하 는 장점 은 유형의 핵심 직책 과 장식 기능 을 효과적으로 분리 시 키 고 관련 유형 에서 중복 되 는 장식 논 리 를 제거 할 수 있다 는 것 이다.
이것 은 문자 의 설명 이다.
디자인 모델 의 예 를 들다.
장식 모드 (장식 패턴) UML 클래스
클래스 와 클래스 는 계승 관계 이다. 그림 의 맨 아래 여섯 가지 유형 은 모두 Person 류 의 Show 방법 을 다시 쓴다. 이렇게 배정 하 는 클래스 와 클래스 간 의 관계 에 따라 반찬 에 몇 가지 장식 반찬 이 있 으 면 몇 가지 장식 이 있다.
다음은 장식 모드 를 실현 하 는 부분 코드 입 니 다.
Person 류 입 니 다.
Finery 류 입 니 다.
 class Person
    { 
    public Person ()
    { }
    private string name;
    public Person(string name)
    {
     this.name=name;
    }
    public virtual void Show()
       {
           Console.WriteLine("   {0}", name);
        }
    }

이것 은 구체 적 인 복식의 종류 로 한 종류 만 쓰 고 나머지 는 유사 하 다.
class Finery:Person 
    {
        protected Person component;
        
        public void Decorate(Person  component)
        {
            this.component = component;
        }
        public override void Show()
        {
            if (component != null)
            {
                component.Show();
            }
        }
    }

콘 솔 프로그램의 일부 코드 입 니 다.
class BigTrouser : Finery
    {
        public override void Show()
        {
            Console.WriteLine("  ");
            base.Show();
        }

    }

좋은 웹페이지 즐겨찾기