자바 디자인 모델 의 4 (전형 적 인 면접 문제: 공장 모델 이 개발 에서 의 활용)

원래 주소:http://www.tuicool.com/articles/ma2I3u
면접 문제:        간단 한 계산 기 를 쓰다. 
코드 구현:
추상 적 인 연산 클래스:
package com.qianyan.calcuator;

public abstract class Operation {

	//   
	private double num1;
	
	//   
	private double num2;

	public double getNum1() {
		return num1;
	}

	public void setNum1(double num1) {
		this.num1 = num1;
	}

	public double getNum2() {
		return num2;
	}

	public void setNum2(double num2) {
		this.num2 = num2;
	}

	public abstract double getResult();
}

공장 클래스 만 들 기:
package com.qianyan.factory;

import com.qianyan.calcuator.AddOperation;
import com.qianyan.calcuator.Operation;
import com.qianyan.calcuator.SubtractOperation;

public class OperationFactory {

	public static Operation getOperation(String oper){
		if("+".equals(oper))
			return new AddOperation();
		else if("-".equals(oper))
			return new SubtractOperation();
		else
			return null;
	}
}

추상 연산 의 실현 클래스:
package com.qianyan.calcuator;

public class AddOperation extends Operation{

	@Override
	public double getResult() {
		return this.getNum1() + this.getNum2();
	}

}
package com.qianyan.calcuator;

public class SubtractOperation extends Operation{

	@Override
	public double getResult() {
		return this.getNum1() - this.getNum2();
	}

}

사용자 클래스:
package com.qianyan.user;

import java.util.Scanner;

import com.qianyan.calcuator.Operation;
import com.qianyan.factory.OperationFactory;

public class User {

	public static void main(String[] args) {
		System.out.println("---- C     ----");
		Scanner input = new Scanner(System.in);
		System.out.println("          :");
		String str1 = input.nextLine();
		System.out.println("      :");
		String oper = input.nextLine();
		System.out.println("          :");
		String str2 = input.nextLine();
		
		double num1 = Double.parseDouble(str1);
		double num2 = Double.parseDouble(str2);
		
		Operation opertion = OperationFactory.getOperation(oper);
		opertion.setNum1(num1);
		opertion.setNum2(num2);
		double result = opertion.getResult();

		System.out.println(str1 + oper + str2 + "=" + result);
	}
}

테스트 결과:
---- C     ----
          :
5
      :
-
          :
3
5-3=2.0

좋은 웹페이지 즐겨찾기