디자인 모델 원칙 - 단일 직책 원칙

14245 단어 디자인 모드
단일 직책 원칙 (SRP)
정의: 한 가지 유형 에 있어 서 변 화 를 일 으 키 는 원인 만 있어 야 합 니 다.
장면: 한 회사 에 3 가지 직원 이 있 는데 각각 주관, 프로그래머, 판매 이다.
코드:
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;



namespace       .    

{

   public  class Employee

    {  



       //      

       public string Coding()

       {

           return "      ";     

       }

       //     

       public string Calling()

       {

           return "     ";

       }

       //    

       public string Smoking()

       {

           return "    ";

       }       

    }

}

 
using System;

using System.Collections.Generic;

using System.Linq; 

using System.Text;

using       .    ;



namespace       

{

    class Program

    {

        static void Main(string[] args)

        {

             Console.WriteLine("   .....");



             Employee emp = new Employee();

             Console.WriteLine(emp.Calling());

             Console.WriteLine(emp.Coding());

             Console.WriteLine(emp.Smoking());             

                  

             Console.Read();



        }

    }

}

 이때 변화 가 생 겼 습 니 다. 주관 자 는 잔업 을 시 켜 야 합 니 다.
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;



namespace       .    

{

   public  class Employee

    {  

       //      

       public string Coding()

       {

           return "      ";     

       }

       //     

       public string Calling()

       {

           return "     ";

       }

       //    

       public string Smoking()

       {

           return "    ";

       }

       //                

       //        

       public string  CoderWorkOvertime()

       {

           return "     " + Coding();

       }

       //       

       public string SellerWorkOvertime()

       {

           return "    " + Calling(); 

       }    

       //.....                   

    }

}

이렇게 하면 Employee 류 가 주관, 판매, 프로그래머 에 게 이러한 변 화 를 일 으 키 고 변화 가 발생 하면 방법 이 증가 하 며 클래스 는 수정 이 필요 하 며 코드 양 이 많 을 때 유지 가 어렵 습 니 다.
이 럴 때 는 분류 하여 Employee 의 직책 을 분리 해 야 한다.
프로그래머:
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;



namespace       .    

{

    public class CoderEmployee

    {

        //      

        public string Coding()

        {

            return "      ";

        }

    }

}

판매:
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;



namespace       .    

{

   public  class SellerEmployee

    {



        //     

        public string Calling()

        {

            return "     ";

        }

    }

}

 주관:
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace       .    

{

   public class HeaderEmployee

    {     

        //    

        public string Smoking()

        {

            return "    ";

        }

        //                 

       

       //        

        public string CoderWorkOvertime(CoderEmployee coder)

        {

            return "     " + coder.Coding();

        }

        //       

        public string SellerWorkOvertime(SellerEmployee seller)

        {

            return "    " + seller.Calling(); 

        } 

    }

}

 분류 후 Employee 직책 이 분리 되 었 습 니 다.주관, 판매, 프로그래머 모두 자신의 직책 에 만 관심 을 가진다.직책 을 추가 해 야 한다 면 해당 하 는 클래스 에 해당 하 는 직책 을 추가 해 야 한다.
using System;

using System.Collections.Generic;

using System.Linq; 

using System.Text;

using       .    ;



namespace       

{

    class Program

    {

        static void Main(string[] args)

        {

             Console.WriteLine("   .....");

          HeaderEmployee header = new HeaderEmployee();

             SellerEmployee seller = new SellerEmployee();

             CoderEmployee coder = new CoderEmployee();

    
     Console.WriteLine(seller.Calling());
// Console.WriteLine(coder.Coding());// Console.WriteLine(header.Smoking());// ; Console.WriteLine(header.CoderWorkOvertime(coder)); Console.WriteLine(header.SellerWorkOvertime(seller)); Console.Read(); } } }

좋은 웹페이지 즐겨찾기