[필기] 디자인 모델 - 장식 자 모델
17811 단어 장식 자 모드
1. 원시 실현
1 // :
2 //1、wear* , ; , , , Wear*, ;
3 //2、 , Person , —— ;
4 //3、 , , ;
5 class Person
6 {
7 private string name;
8 private List<string> clothing=new List<string>();
9 public Person(string name)
10 {
11 this.name = name;
12 clothing.Add(" ");
13 }
14 public void WearJeans()
15 {
16 clothing.Add(" —— ");
17 }
18 public void WearRedTshirt()
19 {
20 clothing.Add(" —— T ");
21 }
22 public void WearShoes()
23 {
24 clothing.Add(" —— ");
25 }
26 public void Show()
27 {
28
29 Console.WriteLine(" , {0}, , ?", name);
30 foreach (var item in clothing)
31 {
32 Console.WriteLine("{0}", item);
33 }
34 }
35
36 public static void Main(string[] args)
37 {
38 Person person = new Person(" ");
39 person.WearRedTshirt();
40 person.WearJeans();
41 person.WearShoes();
42 person.Show();
43 }
개선 코드
1 // :
2 //1、 1 , ;
3 //2、 2 , , ;
4 //3、 3 , Wear , ;
5 //4、 : 、 、 (41 ) 、
6 //5、Console.WriteLine , ?
7 //6、 、 , ?
8 class Person
9 {
10 protected string name;
11 public Person()
12 {
13 }
14 public Person(string name)
15 {
16 this.name = name;
17 }
18 public virtual void Wear()
19 {
20 Console.WriteLine(" , {0}, , ?", name);
21 }
22
23 }
24
25 class ComponetA : Person
26 {
27 protected Person com = null;
28 public void SetComponetA(Person com)
29 {
30 if (com!=null)
31 {
32 this.com = com;
33 }
34 }
35 public override void Wear()
36 {
37 if (com!=null)
38 {
39 com.Wear();
40 }
41 }
42
43 }
44 class Jeans : ComponetA
45 {
46 public override void Wear()
47 {
48 base.Wear();
49 Console.WriteLine(" —— ");
50 }
51 }
52 class Shoes : ComponetA
53 {
54 public override void Wear()
55 {
56 base.Wear();
57 Console.WriteLine(" —— ");
58 }
59 }
60 class RedTshirt : ComponetA
61 {
62 public override void Wear()
63 {
64 base.Wear();
65 Console.WriteLine(" —— T ");
66 }
67
68 }
69 class programmer
70 {
71 public static void Main(string[] args)
72 {
73 Person person = new Person(" ");
74 Jeans jeans = new Jeans();
75 Shoes shoes = new Shoes();
76 RedTshirt redTshirt = new RedTshirt();
77 jeans.SetComponetA(person);
78 shoes.SetComponetA(jeans);
79 redTshirt.SetComponetA(shoes);
80 redTshirt.Wear();
81 }
82 }
3. 총화
1. 디자인 모델 은 어떤 문 제 를 해결 합 니까?답: 장식 모델 은 '유형 중의 장식 기능 을 유형 에서 옮 겨 제거 하면 원래 의 유형 을 간소화 할 수 있다', '유형의 핵심 직책 과 장식 기능 을 효과적으로 구분 할 수 있다. 또한 관련 장식 논 리 를 제거 할 수 있다'.
2, 어떤 수단 으로 효과?답: 장식 모델 은 장식 하고 자 하 는 기능 을 하나의 유형 에 두 고 확장 하기 쉬 운 효 과 를 얻는다.실행 시 다 중 하위 클래스 에서 같은 장식 논 리 를 기본 클래스 에서 통일 적 으로 추출 하여 중복 코드 를 피 합 니 다.
3. 응용 장면 과 제약 조건?답: 기 존 기능 의 동태 에 더 많은 기능 을 추가 해 야 할 때;제약 조건: 장식 류 는 서로 독립 한다.장식 순 서 는 매우 중요 하 다.
4. 대상 을 대상 으로 하 는 몇 가지 원칙 에 부합 합 니까?답: 리 씨 교체, 개방 - 폐쇄, 단일 직책;
5. 디자인 모델 을 사용 하지 않 는 코드 의 단점 은 어디 에 있 습 니까?답: 코드 참조
6. 수 요 를 바 꾸 고 디자인 모델 을 사용 하 는 코드 에 대한 건장 성, 유지 가능성, 확장 성 검 사 를 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 총화 의 장식 모델 (Decorator)장식 모델 은 클 라 이언 트 에 대한 투명 한 방식 으로 대상 의 기능 을 추 가 했 고 동태 적 으로 대상 에 게 책임 을 추 가 했 습 니 다. 또한 장식 모델 이 계승 보다 좋 은 점 은 장식 모델 이 이미 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.