뻥 튀기 디자인 모델 - 단순 공장 모델
10805 단어 단순 공장 모드
디자인 모델 의 네 가지 경계:
1. 배우 기 전에는 잘 모 르 겠 지만 디자인 모델 로 디자인 한 코드 가 엉망 일 줄 은 몰 랐 습 니 다.
2. 몇 가지 모델 을 배 운 후에 매우 기 뻤 습 니 다. 그래서 여기저기 서 자신 이 배 운 모델 을 사용 하려 고 했 기 때문에 여러 가지 모델 을 잘못 사용 하여 자신 도 모 르 게 만 들 었 습 니 다.
3. 완전 부 모델 을 배우 면 여러 모델 이 매우 비슷 하고 모델 간 의 차 이 를 구분 하지 못 하 며 곤 혹 스 럽 지만 오용 의 해 를 잘 알 고 응용 할 때 망 설 인 다.
4. 각종 모델 을 유연 하 게 활용 하고 심지어 구체 적 인 특정한 모델 을 사용 하지 않 아 도 우수한 코드 를 디자인 할 수 있다.
뭐 예요?
간단 한 공장 모델 은 들 어 오 는 데 이 터 를 통 해 몇 가지 가능 한 종류의 인 스 턴 스 를 되 돌려 주 는 것 이다.그러나 이 몇 가지 종 류 는 일반적으로 하나의 공 통 된 특징 이 있 는데 이 몇 가지 종 류 는 모두 공 통 된 부류 와 공 통 된 방법 이 있 지만 모든 방법 이 집행 하 는 내용 이 다 르 고 서로 다른 데이터 에 따라 최적화 된다 는 것 이다.
형상 화 된 예:
우리 가 아침 을 살 때, 아침 가 게 는 무엇 을 팔 고 있 습 니까?그 점 에 주의 하 셨 습 니까?많은 음식 이 거기에 놓 여 있 는데, 당신 은 판매원 에 게 어떤 음식 을 원 하 는 지 만 말 하면, 그 는 당신 에 게 어떤 음식 을 가 져 다 줄 지 알 게 될 것 입 니 다. 이것 은 무엇 을 설명 하 는 것 입 니까?
대상 을 향 한 생각 으로 이해한다 면 영업 사원 은 이곳 에서 공장 의 역할 을 맡 았 고, 그 는 당신 의 요구 에 따라 당신 이 필요 로 하 는 식품 대상 으로 돌아 가 는 일 을 맡 았 다.
이 점 이 단순 공장 모델 의 의도 다.
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Operation oper;
oper = OperationFactory.createOperate("+");
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.GetResult();
Console.Write(result+"
");
}
}
public class Operation
{
private Double _numberA = 0;
private Double _numberB = 0;
public double NumberA
{
get
{
return _numberA;
}
set
{
_numberA = value;
}
}
public double NumberB
{
get
{
return _numberB;
}
set
{
_numberB = value;
}
}
public virtual double GetResult()
{
double result = 0;
return result;
}
}
class OperationAdd : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA + NumberB;
return result;
}
}
class OperationSub : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA - NumberB;
return result;
}
}
class OperationMul : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA * NumberB;
return result;
}
}
class OperationDiv : Operation
{
public override double GetResult()
{
double result = 0;
if (NumberB == 0)
{
throw new Exception(" 0");
}
result = NumberA / NumberB;
return result;
}
}
public class OperationFactory
{
public static Operation createOperate(string operate)
{
Operation oper = null;
switch (operate)
{
case "+":
oper = new OperationAdd();
break;
case "-":
oper = new OperationSub();
break;
case "*":
oper = new OperationMul();
break;
case "/":
oper = new OperationDiv();
break;
}
return oper;
}
}
}
덧셈 연산 을 수정 하려 면 Operation Add 만 수정 하면 됩 니 다. 만약 에 우리 가 각종 복잡 한 연산 을 증가 해 야 합 니 다. 예 를 들 어 평 방 근, 큐 브 근, 자연 대수 등 우 리 는 해당 하 는 연산 자 류 를 증가 하고 switch 에서 가 지 를 증가 하면 됩 니 다. 인터페이스 를 수정 하려 면 인터페이스의 코드 와 연산 류 만 수정 하면 됩 니 다.
여기 서 다 형, 즉 자 류 는 아버지 류 로 나타 나 지만 자신의 방식 으로 이 루어 지 는 것 이다.
여기 가 바로 가감 승제 류 가 연산 부류 의 신분 으로 나타 나 지만 각 하위 클래스 가 GetResult () 를 실현 하 는 방법 은 각각 다르다. 이렇게 하면 인터페이스 코드 가 구체 적 인 실례 를 만 들 지 않 고 소나무 결합의 목적 을 달성 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 --- 간단 한 공장 모델 (학습 노트)간단 한 공장 은 사실상 디자인 모델 이 아니 라 프로 그래 밍 습관 과 비슷 합 니 다! 먼저 코드 를 보고 코드 에서 이 프로 그래 밍 습관 을 이해 하 세 요. 코드 에서 알 수 있 듯 이 대상 을 만 들 기 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.