디자인 모델 학습 (간단 한 공장, 전략 모델, 단일 직책, 개폐 원칙)

최근 에 큰소리 로 디자인 모델 을 보 았 는데 이 책 은 생동감 있 는 이야기 와 대화 로 독자 에 게 디자인 모델 과 디자인 원칙 에 관 한 지식 을 설명해 주 는 것 이 대상 을 대상 으로 하 는 것 을 배 우 는 데 큰 도움 이 된다.
디자인 모델 과 원칙 적 인 장점 을 배우 면 코드 디자인 을 더욱 중용 성, 확장 성, 유지보수 성, 유연성 을 가지 게 할 수 있다.
'단순 공장 모델' 을 가장 먼저 알 게 됐다.
간단 한 공장 은 공장 류 의 방식 으로 필요 한 기능 류 대상 을 만 들 고 클 라 이언 트 류 에서 공장 류 의 생 성 대상 방법 을 호출 하면 수 요 를 실현 할 수 있다.
새로운 기능 수 요 를 추가 하려 면 새로운 기능 류 코드 를 작성 하고 공장 류 에 새로운 기능 가 지 를 추가 하 십시오.우리 초보 자 들 이 코드 를 처음 쓰 는 것 처럼 모든 기능 이 클 라 이언 트 에서 만 이 루어 지 는 것 이 아니 라 대상 을 대상 으로 하 는 정 수 를 전혀 이해 하지 못 했다.봉인, 계승, 다 태.
예 를 들 면:
어떤 기능 은 이 를 하나의 부모 클래스 로 추상 화하 고 하나의 기능 을 추가 하면 하나의 하위 클래스 를 써 서 계승 해 야 한다.자 류 에서 부류 의 공 유 를 실현 하 는 방법 은 다 태 를 나타 낸다.공장 클래스 를 다시 만 듭 니 다. 초보 자 는 switch 문 구 를 이용 하여 모든 기능 에 대응 하 는 케이스 문 구 를 사용 하여 관련 기능 류 의 대상 을 만 들 고 다시 쓰 거나 다시 불 러 오 는 방법 으로 기능 을 수행 할 수 있 습 니 다.
정수 코드:
public class Father
{
   public virtual void GetResult();
}

public class Son1:Father
{
   public override void GetResult()
   {
     Console.WriteLine("1");
   }
}

public class Son2:Father
{
   public override void GetResult()
   {
     Console.WriteLine("2");
   }
}

public class SimpleFactory
{
   public static void CreateSon(int sonNum)
   {
     Father f;
     switch(sonNum){
       case 1:f=new Son1();break;
       case 2:f=new Son2();break;
       }
   }
}


static void Main()
{
   Father fa=SimpleFactory.CreateSon(1);
   fa.GetResult();

   Console.Read();
}

두 번 째 는 이다.
전략 Strategy 모델 은 변 화 를 패키지 하고 다양한 전략 을 추상 화 합 니 다.클 라 이언 트 의 일상적인 변경 전략 은 소스 코드 에 큰 영향 을 미 치지 않 고 전략 대상 을 하나의 Context 류 에 밀봉 한다. 클 라 이언 트 는 이런 유형 만 식별 하고 간단 한 공장 모델 처럼 공장 류 를 이해 하지 않 아 도 된다.
abstract class Father
{
   public abstract void GetResult();
}

public class Son1:Father
{
   public override void GetResult()
   {
     Console.WriteLine("1");
   }
}

public class Son2:Father
{
   public override void GetResult()
   {
     Console.WriteLine("2");
   }
}

public class SonContext
{
Father fa;
public SonContext(int sonNum)
{
switch(sonNum)
{
case 1:fa=new Son1();break;
case 2:fa=new Son2();break;
}
}
public void Get()
{
fa.GetResult();
}
}

static void Main()
{
SonContext sc=new SonContext(1);
sc.Get();
Console.Read();

대상 을 한층 더 봉인 하 다.전략 모드 는 일련의 알고리즘 을 정의 하 는 방법 이다.개념 적 으로 볼 때 모든 알고리즘 이 똑 같은 작업 을 완 성 했 습 니 다. 다만 서로 다른 방식 으로 모든 알고리즘 을 호출 하여 각종 알고리즘 류 와 사용 알고리즘 류 간 의 결합 을 줄 일 수 있 습 니 다.
전략 모델 은 패 키 징 알고리즘 에 사 용 됩 니 다. 실천 에서 거의 모든 유형의 규칙 을 패 키 징 할 수 있 습 니 다. 분석 과정 에서 서로 다른 업무 규칙 을 사용 하면 전략 모델 을 고려 할 수 있 습 니 다.기본 전략 모델 은 구체 적 인 실현 직책 을 클 라 이언 트 대상 이 맡 고 전략 모델 의 Context 대상 에 게 전달 하 는 것 을 선택한다.
단일 직책 원칙
각 종 류 는 하나의 변화, 즉 하나의 직책 에 대응 하 는 것 이다.하나의 직책 이 너무 많 고 코드 가 취약 해 지 며 결합 도가 커진다.직책 을 코드 디자인 의 중점 으로 분리 하지만 지나치게 추상 적 으로 해 서 는 안 된다.
개방 폐쇄 원칙
수정 을 닫 고 확장 을 엽 니 다.프로그램 이 필요 할 때 코드 를 확장 하기 만 하면 됩 니 다. 모든 코드 를 변경 하지 않 아 도 됩 니 다.가능 한 변 화 를 예측 하고 추상 적 인 격 리 변 화 를 구축 해 야 한다.  시기: 변화 가 발생 할 때 즉시 행동 을 취한 다!

좋은 웹페이지 즐겨찾기