코드를 짜다가 질문 사항이 생겼다
이것은 내가 짠 코드
public class Calculator {
private AddOperation addOperation = new AddOperation();
private SubstractOperation substractOperation = new SubstractOperation();
private MultiplyOperation multiplyOperation = new MultiplyOperation();
private DivideOperation divideOperation = new DivideOperation();
}
이것은 정답으로 나와있던 코드
public class Calculator {
private final AddOperation addOperation;
private final SubstractOperation substractOperation;
private final MultiplyOperation multiplyOperation;
private final DivideOperation divideOperation;
public Calculator(AddOperation addOperation, SubstractOperation substractOperation,
MultiplyOperation multiplyOperation, DivideOperation divideOperation){
this.addOperation = addOperation;
this.substractOperation = substractOperation;
this.multiplyOperation = multiplyOperation;
this.divideOperation = divideOperation;
}
}
내가 짠 코드는 객체를 바로 생성하고 정답 코드는 변수로 선언을 해준 뒤, main에서 생성후 생성자로 대입하는 방식이었는데 두 코드 모두 원하는 대로 실행이 되었지만 두 경우의 차이가 궁금했다. 첫 번째의 경우는 객체를 바로 생성하므로 강제성이 생기고 강한 연결성이 부여되는데 반해 두 번 째 경우는 유연한 코드가 된다. 수정이 용이 하며 약한 연결성을 가지므로 필요한 경우에 맞게 구현하면 된다고 한다. (대부분 2번째 경우로 사용되는듯함)