목록Design Patterns (7)
The Office Lover
확장할 때는 개방, 수정할 때는 폐쇄 개방 폐쇄 원칙은 코드의 확장성 문제로 볼 수 있다. 추후 변경되는 요구 사항에 대응할 때 코드가 확장할 때는 개방, 수정할 때는 폐쇄될 수 있다면 해당 코드의 확장성이 매우 뛰어나다는 것을 의미한다. 확장 가능한 코드를 작성하려면 확장, 추상화, 캡슐화에 대해 인식하고 있는 것이 매우 중요하다. 코드 작성시 현재 코드에 앞으로 요구 사항이 추가될 가능성에 대해 더 많은 시간을 할애할 필요가 있다. 미리 설계해 확장 가능하도록 미리 구성하면, 코드의 전체 구조를 변경할 필요 없이 새로운 코드가 유연하게 추가되며, 코드 수정을 최소화하면서 요구 사항을 만족시킬 수 있다. 코드의 변경 가능한 부분과 변경할 수 없는 부분을 잘 식별 변경되는 사항을 기존 코드와 분리할 수 ..
팩토리 패턴(factory pattern)이란? 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 한다 즉, 팩토리 메서드 패턴을 이용하면 클래스의 인스턴스를 만드는 일을 서브클래스에게 맡기는 것 자바코드로 이해하기 핵심은 모두 같은 부모 클래스를 상속한다는 점 public interface Shape { void draw(); } public class Rectangle implements Shape { @Override public void draw() { System.out.println("Inside Rectangle :: draw() method."); } } public class Square implements Shape { @Overri..
인터페이스의 정의 인터페이스는 속성을 포함할 수 없다. 인터페이스는 메서드를 선언할 수 있으나, 실제 코드 구현을 포함할 수 없다. 클래스가 인터페이스를 구현할 때는 인터페이스에 선언된 모든 메서드를 구현해야 한다. Java 1.8 이후부터는 인터페이스의 메서드에 코드 구현이 포함될 수 있으며, 인터페이스에 정적 멤버 변수가 포함될 수 있다. 하지만, Java를 제외하면 인터페이스는 위의 특성을 그대로 간직하고 있다. 본질적으로 인터페이스는 프로토콜 또는 규약의 집합으로, 사용자에게 제공되는 기능의 목록이다. 코드에서 구현되는 인터페이스는 구현이 아닌 인터페이스 기반이라는 설계 사상에 프로그래밍 언어의 인터페이스 또는 추상 클래스로 이해될 수 있다. 이 설계 사상을 적용하면 코드 품질을 효과적으로 향상할..