디자인 모드 (17): 향 원 모드

2766 단어
정의
공유 기술 을 활용 하여 대량의 입자 도 를 효과적으로 지원 하 는 대상.
실례
우선, 향원 초 류 가 있다.
 public abstract class Website
    {
        public int websiteid;
        public Website(int _websiteid)
        {
            websiteid = _websiteid;
        }
        public abstract void Collecter();                
    }

그 다음으로 구체 적 인 하위 클래스
 public class Mall : Website
    {
        public Mall(int _websiteid) : base(_websiteid)
        {
        }
        public override void Collecter()
        {
            Console.WriteLine("  .");
        }
    }

마지막 으로 향 원 공장 이 필요 합 니 다.
 public class WebsiteFactory
    {
        private Hashtable websites = new Hashtable();
        public Website GetWebsiteByID(int key)
        {
            if (!websites.ContainsKey(key))
                websites.Add(key, new Mall(key));
            return (Website)websites[key];
        }
    }

클 라 이언 트:
//------------------------    ------------------------
            Flyweight.WebsiteFactory factory = new Flyweight.WebsiteFactory();
            Flyweight.Website web_1= factory.GetWebsiteByID(1);
            web_1.Collecter();

            Flyweight.Website web_2 = factory.GetWebsiteByID(2);
            web_2.Collecter();

            Flyweight.Website web_3 = factory.GetWebsiteByID(2);
            web_3.Collecter();

3. 총화
1. 향 원 모드 VS 단일 모드
향 원 은 대상 등급 이다. 즉, 여러 곳 에서 이 대상 을 사용 하 는 곳 에서 이 대상 만 사용 하면 요 구 를 만족 시 킬 수 있다. 한 가지 예 는 유형 등급 이다. 즉, 이런 유형 은 반드시 하나의 대상 만 예화 해 야 한다. 이렇게 말 할 수 있다. 한 가지 예 는 향 원 의 특례 이 고 디자인 모델 은 구체 적 인 코드 에 구 애 받 지 않 아 도 된다. 코드 실현 은 n 여러 가지 방식 이 있 을 수 있다.한편, 단일 사례 는 향 원 의 실현 방식 중의 하나 라 고 볼 수 있 지만 그 는 향 원 보다 대상 의 유일 성 을 더욱 엄격하게 통제 했다.
2. 응용 환경
프로그램 에서 대량의 대상 을 응용 하여 매우 큰 저장 공간 을 만 들 었 고 이런 대상 들 은 외부 환경의 매개 변수 에 따라 구분 할 수 있다.

좋은 웹페이지 즐겨찾기