디자인 모드 시리즈 - 조합 모드
전언
조합 모델은 구조형 모델에 속하고 여러 개의 비슷한 대상을 한데 조합함으로써 하나의 나무형의 전체-부분의 관계를 구축할 수 있다.단일 객체와 결합된 객체의 사용 방식이 동일함을 보장합니다.현실 장면에서 컴퓨터에 있는 폴더의 조회 전시와 같이 조합 모드를 연상할 수 있다.
분류도 묘사
대략
코드 구현
1. 구체적 실현
public class Employee
{
private string name;
private string dept;
private int salary;
private List subordinates;
public Employee(string name,string dept,int sal)
{
this.name = name;
this.dept = dept;
this.salary = sal;
subordinates = new List();
}
public void Add(Employee e) => subordinates.Add(e);
public void Remove(Employee e) => subordinates.Remove(e);
public List GetSubordinates() => this.subordinates;
public override string ToString() => $"Employee :[name:{name},dept:{dept},salary:{salary}]";
}
2. 상부 호출
class Program
{
static void Main(string[] args)
{
Employee CEO = new Employee("John", "CEO", 30000);
Employee headSales = new Employee("Robert", "Head Sales", 20000);
Employee headMarketing = new Employee("Michel", "Head Marketing", 20000);
Employee clerk1 = new Employee("Laura", "Marketing", 10000);
Employee clerk2 = new Employee("Bob", "Marketing", 10000);
Employee salesExecutive1 = new Employee("Richard", "Sales", 10000);
Employee salesExecutive2 = new Employee("Rob", "Sales", 10000);
CEO.Add(headSales);
CEO.Add(headMarketing);
headSales.Add(salesExecutive1);
headSales.Add(salesExecutive2);
headMarketing.Add(clerk1);
headMarketing.Add(clerk2);
Console.WriteLine(CEO);
foreach (var headEmployee in CEO.GetSubordinates())
{
Console.WriteLine(headEmployee);
foreach (var employee in headEmployee.GetSubordinates())
{
Console.WriteLine(employee);
}
}
Console.ReadKey();
}
}
총결산
조합 모델은 각 구체적인 실현을 모두 같은 실체류로 하고 인터페이스에 의존하지 않기 때문에 의존 역치의 원칙에 위배된다.따라서 구체적인 사용 장면에서 구체적인 분석과 구체적인 대처가 필요하다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.