디자인 모델 의 디 미트 법칙

8568 단어 디자인 모드
What
Least Konwledge Principle (LCP): 최소 지식 원칙, 한 대상 이 다른 대상 에 대해 가장 적 게 알 아야 합 니 다.
  Why
시스템 의 결합 도 를 낮 추어 클래스 와 클래스 간 에 느슨 한 결합 관 계 를 유지 합 니 다.
  How
종업원
    class Employee

    {

        private string name;



        public string Name

        {

            get { return name; }

            set { name = value; }

        }

    }

보스 클래스
   class Boss

    {

        private List<Employee> employees;



        public List<Employee> Employees

        {

            get { return employees; }

            set { employees = value; }

        }



        //          

        public void Notify(string message)

        {

            foreach (var item in Employees)

            {

                Console.WriteLine(item.Name + message);

            }

        }

    }

클 라 이언 트 호출
    class Program

    {

        static void Main(string[] args)

        {

            Boss boss = new Boss();

            boss.Employees = new List<Employee>();

            boss.Employees.Add(new Employee() { Name = "  " });

            boss.Employees.Add(new Employee() { Name = "  " });



            boss.Notify("           ");



            Console.ReadLine();

        }

    }

수 요 는 완성 되 었 지만, 우 리 는 그 중의 유형 간 의 관 계 를 자세히 생각해 보 자.Boss 류 에 있어 그 는 모든 직원 을 알 아야 한다. 그리고 소식 이 있 으 면 직원 에 게 알려 야 한다. 규모 가 크 지 않 은 회사 에 대해 이런 것 이 가능 할 수 있다. 그러나 대규모 회사 라면 이런 것 은 분명 적절 하지 않다. 사장 은 모든 직원 을 알 필요 가 없다. 사장 은 결정 을 내 려 야 한다.이런 일 을 통지 하 는 것 은 행정 부서 가 조율 해 야 한다.Boss 는 그 가 알 필요 가 없 는 일 을 알 고 그 가 감당 할 필요 가 없 는 직책 을 맡 았 다. 이런 직책 이 너무 무 겁 고 유형 간 의 결합 성 도 증가 했다. 우리 소프트웨어 디자인 의 목 표 는 높 은 결합, 낮은 내부 집적 이다.그러면 현실 에서 사장 은 비서 가 있 고 보통 비서 가 이런 일 을 완성 한다. 그러면 우 리 는 여기에 비서 류 를 추가 하 는 것 이다. 현재 비서의 직책 은 사장 이 발표 한 소식 을 관계자 에 게 알 리 는 것 이다.(수 요 는 나중에 바 뀔 수 있 고 각 부서, 통지 부서 등 이 증가 할 수 있 지만 우 리 는 과도 한 설 계 를 하지 않 고 작은 변화 가 생 겼 을 때 신속하게 변 화 를 한다).
비서 류
   class Secretary : Employee

    {

        private List<Employee> employees;



        public List<Employee> Employees

        {

            get { return employees; }

            set { employees = value; }

        }



        //          

        public void Notify(string message)

        {

            foreach (var item in Employees)

            {

                Console.WriteLine(item.Name + message);

            }

        }

    }

보스 클래스
   class Boss

    {

        private Secretary bossSecretary;



        public Secretary BossSecretary

        {

            get { return bossSecretary; }

            set { bossSecretary = value; }

        }



        public void AnnounceMessage(string message)

        {

            if (BossSecretary != null)

            {

                BossSecretary.Notify(message);

            }

        }

    }

클 라 이언 트 호출
    class Program

    {

        static void Main(string[] args)

        {

            Boss boss = new Boss();

            Secretary secretary = new Secretary() { Name = "  " };



            secretary.Employees = new List<Employee>();

            secretary.Employees.Add(new Employee() { Name = "  " });

            secretary.Employees.Add(new Employee() { Name = "  " });

            secretary.Employees.Add((Employee)secretary);



            boss.BossSecretary = secretary;

            boss.AnnounceMessage("           ");



            Console.ReadLine();

        }

    }

이러한 변화 후에 유형 간 의 구 조 는 더욱 뚜렷 하고 안정 적 이 며 느슨 한 결합 효 과 를 얻 었 다. Boss 류 와 Employee 류 는 현재 비교적 느슨 하 다. 구상 한 후에 새로운 부 서 를 설립 했 을 때 우 리 는 비서 류 에 대해 해당 하 는 처리 만 해 야 한다. 한편, Boss 류 는 상대 적 으로 안정 적 이다.

좋은 웹페이지 즐겨찾기