디자인패턴(4)
-
[패캠강의] 빌더패턴
Builder 패턴 Builder 패턴 객체를 생성할 때 단계적 생성에 중점을 두는 패턴입니다. 동일한 생성 과정을 통해 다른 구현을 할 수 있다는 것이 큰 특징입니다. 객체 협력 예시 Builder : 인터페이스나 추상클래스 Concrete Builder : Builder를 구현한 클래스 Director : Builder를 사용해 Product를 생성 Product : 결과물 예제코드 MakeReport(Builder)를 textReport, HTMLReport 등으로 다양하게 구현할 수 있습니다. public interface MakeReport { String makeHeader(); String makeBody(); String makeConclusion(); String getReport(); ..
2022.01.15 -
[패캠강의] 프로토 타입 패턴
[패캠강의] 프로토 타입 패턴 복잡한 클래스의 인스턴스를 생성할 때 하나의 견본(prototype)을 만들어 초기화해두고 이를 복제해서 객체를 사용하는 방법입니다. (Java clone() 메서드라고 생각하시면 됩니다.) 예제코드를 보면 바로 이해할 수 있을 겁니다. 주의할 점은 Mark interface(override해야할 메서드가 없이 특성만 알려주는 인터페이스) Cloneable과 깊은 복사입니다. 참고로 Arrays.copyOf() 메서드도 깊은 복사를 채택합니다. //Arrays.copyOf() 메서드 docs, 새로운 배열을 만들어서 System.arraycopy 해줍니다. public static int[] copyOf(int[] original, int newLength) { int[] ..
2022.01.12 -
[패캠강의] 팩토리 메서드 패턴
Factory Method Pattern 하위 클래스에게 위임하는 패턴 중 하나입니다. 팩토리를 하나 두고, 들어오는 매개 변수에 따라서든 Map에 해당되는 keyword에 따라서든 인스턴스를 다르게 반환해줄 수 있는 패턴입니다. 팩토리에서 조건이나 인스턴스 관리를 맡아하면 하위 클래스는 변경에 대처할 부분이 적어지는 장점이 있습니다. JDK에서 사용되는 팩토리 메서드는 getInstance()가 java.util.Calendar, NumberFormat, ResourceBundle에서 사용되고 있습니다. 레퍼 클래스 Integer, Boolean etc 들에서 value들을 측정하기 위해 valueOf() 메서드를 사용할때도 팩토리 메서드 패턴을 사용합니다. public class Calendar { ..
2022.01.01 -
[패캠강의] 1장_객체지향의 설계
디자인 패턴에 대해 알아봅시다 디자인 패턴을 잘할 수 있는 방법? 경험, (삽질)이 디자인 설계를 실제로 늘 수 있게 도와줍니다. 설계를 여러번 실패하면서 코드를 짜봐야 알게됩니다. 객체지향설계 객체의 blue print가 클래스, 기능들이 메서드입니다. 추상화 어떤 영역에서 필요한 속성이나 기능을 추출하는 작업 인터페이스 객체를 클라이언트에 필요한 기능만 오픈할 수 있고 책임을 전달할 수 있는 매개? 필요한 기능만을 오픈한다는 건 객체지향의 캡슐화와 연관되어 있습니다. 상속성 일반적인 객체보다 구체적인 객체를 말합니다. 상위 클래스를 상속한 하위 클래스는 필수 기능들을 재정의 할수도 있습니다. 다형성 같은 코드가 다른 결과를 만들어 내는 메서드입니다. 응집도, 결합도 응집도가 높은 클래스는 단일 책임의..
2021.12.31