디자인 모델 프로 그래 밍 에서 C\#조합 모델 에 대한 활용 분석
소프트웨어 개발 과정 에서 우 리 는 간단 한 대상 과 복합 대상 을 처리 하 는 상황 을 자주 만 날 수 있다.예 를 들 어 운영 체제 에서 디 렉 터 리 에 대한 처 리 는 바로 이런 예 이다.디 렉 터 리 는 단독 파일 도 포함 할 수 있 고 폴 더 도 포함 할 수 있 으 며 폴 더 는 파일 로 구성 되 기 때문이다.간단 한 대상 과 복합 대상 은 기능 적 으로 차이 가 있 기 때문이다.이 로 인해 조작 과정 에서 간단 한 대상 과 복합 대상 을 구분 해 야 한다.그러면 고객 호출 에 불필요 한 번 거 로 움 을 가 져 올 수 있 지만 고객 으로서 그들 은 간단 한 대상 과 복합 대상 을 시종일관 일치 하 게 대 할 수 있 기 를 바란다.그러나 조합 모델 은 이런 문 제 를 해결 하 는 것 이다.다음은 조합 모델 이 이 문 제 를 어떻게 해결 하 는 지 살 펴 보 자.
2.조합 모델 에 대한 상세 한 소개
2.1 조합 모드 의 정의
조합 모델 은 대상 을 트 리 구조 로 조합 하여'부분-전체'의 차원 구 조 를 표현 하고 고객 이 하나의 대상 과 대상 의 조합 을 일치 하 게 처리 하도록 한다.다음은 우리 가 그린 예 로 조합 모델 을 상세 하 게 소개 한다.도형 은 일부 기본 적 인 도형 요소 로 구성 할 수 있 고(예 를 들 어 직선,원 등)복잡 한 도형 으로 구성 할 수 있다.(기본 적 인 도형 요소 로 구성)고객 이 기본 도형 과 복잡 한 도형 에 대한 호출 을 일치 시 키 기 위해 우 리 는 조합 모델 을 사용 하여 전체 목적 을 달성 할 수 있다.
조합 모델 이 실현 되 는 가장 관건 적 인 부분 은 간단 한 대상 과 복합 대상 이 반드시 같은 인 터 페 이 스 를 실현 해 야 한 다 는 것 이다.조합 모델 이 조합 대상 과 간단 한 대상 을 일치 하 게 처리 할 수 있 는 이유 다.
2.2 조합 모델 의 실현
예:
족보 작성:
남성:대 를 이 을 수도 있 고,일 부 를 족 보 를 제거 할 권리 도 있다.
여성:가보 에 기록 되 어 있 지만 대 를 잇 지 못 합 니 다.
이해:모든 작은 가정 에서 엄마,아빠 와 나 는 아빠 가 결정 하지만 나 와 엄마 중 하 나 를 차 버 릴 수도 있 고 하 나 를 추가 할 수도 있다.구성 요소 모드 의 구성 요 소 는 하나의 대상 으로 구성 할 수도 있 고 여러 개의 구성 요소 로 구성 할 수도 있 습 니 다(한 가정,심지어 한 가정의 다단 계 연장).
아 날로 그:
족 원 공통 코드:
//// <summary>
/// //
/// </summary>
public abstract class Father
{
//
protected string name = string.Empty;
public string Name
{
get
{
return name;
}
}
//
public abstract void Add(Father boy);
//
public abstract void Remove(Father boy);
// ,
public abstract void Intro();
}
//
public class Boy : Father
{
//
public Boy() { }
public Boy(string Name)
{
this.name = Name;
}
List<Father> myFamily = new List<Father>();
//
public override void Intro()
{
Console.WriteLine(" :{0};", Name);
foreach (Father f in myFamily)
{
f.Intro();
}
}
//
public override void Add(Father boy)
{
myFamily.Add(boy);
}
//
public override void Remove(Father boy)
{
myFamily.Remove(boy);
}
}
//
public class Gril : Father
{
//
public Gril() { }
public Gril(string Name)
{
this.name = Name;
}
//
public override void Intro()
{
Console.WriteLine(" :{0};", Name);
}
//
public override void Add(Father store)
{
throw new NotImplementedException();
}
//
public override void Remove(Father store)
{
throw new NotImplementedException();
}
} :
public static void Main()
{
//
Boy yeye = new Boy(" ");
Gril nainai = new Gril(" ");
yeye.Add(nainai);
//
Boy baba = new Boy(" ");
Gril gugu = new Gril(" ");
yeye.Add(gugu);
yeye.Add(baba);
//
Boy me = new Boy("me");
baba.Add(me);
//
Boy son = new Boy("son");
me.Add(son);
// ,
yeye.Intro();
Console.Read();
}
2.3 조합 모드 의 유형 도위 를 보고 조합 모델 의 유형 도 를 구체 적 으로 살 펴 보고 조합 모델 중의 유형 간 의 관 계 를 정리 합 시다.
투명 한 조합 모드 도표:
보안 조합 모드 의 분류:
조합 모드 에서 세 가지 캐릭터 와 관련된다.
4.567917.추상 적 인 구조 재(Component)역할:이것 은 추상 적 인 역할 이다.위 에서 실 현 된 Graphics 는 이 역할 을 충당 하고 조합 에 참가 하 는 대상 에 게 공공 인터페이스 와 기본 행 위 를 정의 하여 모든 하위 대상 을 관리 할 수 있다(투명 한 조합 모델 은 이렇다).안전 한 조합 모델 에서 구조 재 역할 은 하위 대상 을 관리 하 는 방법 을 정의 하지 않 고 이 정 의 는 나뭇가지 구조 대상 에 의 해 내 려 진다
장점:
조합 모드 로 인해 클 라 이언 트 코드 는 대상 과 대상 용 기 를 일치 하 게 처리 할 수 있 습 니 다.관계 처리 가 필요 없 는 단일 대상 입 니까?아니면 조합의 대상 용기 입 니까?
'클 라 이언 트 코드 와 복잡 한 대상 용기 구조'를 결합 합 니 다.
조합 대상 에 새로운 구조물 을 쉽게 넣 을 수 있다.
단점:디자인 을 더욱 복잡 하 게 만든다.클 라 이언 트 는 클래스 간 의 차원 관 계 를 정리 하 는 데 더 많은 시간 을 들 여야 한다.(이것 은 거의 모든 디자인 모델 이 직면 한 문제 이다.
질문
때때로 시스템 은 나뭇가지 구조의 하위 구 조 를 여러 번 옮 겨 다 녀 야 한다.이 럴 때 하위 구 조 를 부모 구조물 에 저장 하 는 것 을 캐 시 로 고려 할 수 있다.
클 라 이언 트 는 나뭇잎 류 의 방법 을 직접 호출 하지 않 으 려 고 합 니 다.(제 위 에서 이 루어 진 것 은 바로 이 렇 습 니 다.나뭇가지 의 구체 적 인 대상 을 만 들 었 습 니 다.GraphicscomplexGraphics=new ComplexGraphics("복잡 한 도형 과 두 라인 으로 구 성 된 복잡 한 도형")를 사용 해 야 합 니 다.부모 클래스(Graphics)의 다 태 성 을 빌려 호출 을 완성 하면 코드 의 복용 성 을 증가 시 킬 수 있다.
4.조합 모드 의 사용 장면
다음 과 같은 상황 에서 조합 모드 를 사용 하 는 것 을 고려 해 야 한다.
4.567917.한 대상 의 전체 또는 부분의 차원 구 조 를 나타 내야 한다4.567917.사용자 가 조합 대상 과 단일 대상 의 차 이 를 무시 하고 사용 자 는 조합 구조 중의 모든 대상 을 통일 적 으로 사용 하 기 를 바란다5.조합 모델 이.NET 에서 의 응용
조합 모델 은.NET 에서 가장 전형 적 인 응용 은 바로 WinForms 와 Web 의 개발 이다..NET 라 이브 러 리 에서 모두 이 두 플랫폼 에 기 존의 컨트롤 을 많이 제 공 했 지만 System.Windows.Forms.dll 에서 System.Windows.Forms.Control 류 는 조합 모델 을 응용 했다.컨트롤 은 Label,TextBox 등 간단 한 컨트롤 을 포함 하 는 동시에 GroupBox,DataGrid 와 같은 복합 적 인 컨트롤 은 모든 컨트롤 이 OnPaint 방법 으로 컨트롤 을 표시 해 야 합 니 다.이러한 대상 간 의 전체 와 부분의 차원 구 조 를 나타 내기 위해 마이크로소프트 는 Control 류 의 실현 을 조합 모드(정확히 말 하면 투명 한 조합 모드)로 응용 하 였 습 니 다.
총화
여기 서 조합 모델 에 대한 소 개 는 끝 났 습 니 다.조합 모델 은 클 라 이언 트 프로그램 과 복잡 한 요소 내부 구 조 를 결합 시 켜 클 라 이언 트 프로그램 이 간단 한 요 소 를 처리 하 는 것 처럼 복잡 한 요 소 를 처리 할 수 있 도록 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.