반응형
1. 정의 💡 데코레이터 패턴 (decorator pattern) 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. 2. 예) 커피 주문 시스템 현재의 커피 시스템은 다음과 같이 되어 있다. Beverage 라는 슈퍼클래스가 존재하고, 이 클래스를 상속하여 Espresso, Decaf 등 각 음료 클래스가 있다. // Beverage 슈퍼 클래스 public abstract class Beverage { String description = "무슨 음료"; // getter public String getDescription() { return description; } /** 가격은 다르므로 각 클래스에서 결정*/ ..
『Clean Code(클린 코드) 애자일 소프트웨어 장인 정신 - 로버트 C. 마틴』 을 읽고 요약한 내용입니다. 뚜껑을 열었을 때 독자들이 코드가 깔끔하고, 일관적이며, 꼼꼼하다고 감탄하면 좋겠다. 질서 정연하다고 탄복하면 좋겠다. 전문가가 짰다는 인상을 심어주면 좋겠다. 그 대신에 숭 취한 뱃 사람 한 무리가 짜놓은 듯 어수선해 보인다면 독자들는 프로젝트의 다른 축면도 똑같이 무성의한 태도로 처리했으리라 생각할 것이다. 형식을 맞추는 목적 코드 형식은 의사소통의 일환이다. 의사소통은 전문 개발자의 일차적인 의무다. 적정한 행 길이를 유지하라 반드시 지킬 엄격한 규칙은 아니지만 바람직한 규칙으로 삼으면 좋겠다. 일반적으로 큰 파일보다 작은 파일이 이해하기쉽다. 신문 기사처럼 작성하라 소스 파일도 신문기..
1. 정의 💡 전략 패턴 , 스트래티지 패턴 (strategy pattern) 알고리즘군을 정의하고 각각 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지 패턴을 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. '행위(Behavioral) 패턴' 행위를 클래스로 캡슐화해 동적으로 (전략에 맞게) 행위를 자유롭게 바꿀 수 있게 해주는 패턴 전략(Strategy)을 쉽게 바꿀 수 있도록 해주는 패턴 여기서 전략이란? 어떤 목적을 달성하기 위해 일을 수행하는 방식. 비즈니스 규칙, 문제해결 알고리즘 등 2. [예제] 오리게임 어플리케이션 // 오리 슈퍼클래스 public abstract class Duck { public Duck() {} public void quac..
💡 템플릿 메소드 패턴 (template method pattern) 메소드에서 알고리즘의 골격을 정의한다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의할 수 있다. 예제) 커피와 티의 추출 과정 커피 추출 과정 티 추출 과정 1. 물을 끓인다. 2. 커피를 우려낸다. 3. 컵에 따른다. 4. 설탕 및 우유를 첨가한다. 1. 물을 끓인다. 2. 티를 우려낸다. 3. 컵에 따른다. 4. 레몬을 첨가한다 일련의 과정이 거의 동일하다. 차이가 있는 부분만 강조 표시 해보았다. 공통되는 부분을 추상화 (abstract) 시켜 클래스를 만들어 보자. // 추상클래스 (abstract) public a..
1. 제네릭(Generic) 이란? 사전적 의미 : 일반적, 포괄적 자바(java)에서 제네릭(generic)은 데이터 타입을 일반화한다는 의미이다. List, Map 을 사용할때 괄호안에 타입을 지정해서 다음과 같이 생성한다. List memberList = new ArrayList(); List numList = new ArrayList(); Map monthMap = new HashMap(); Map memberMap = new HashMap(); class Member { String name; String mailAddress; } 타입으로 String, Integer, 직접만든 Member 클래스등을 지정해서 생성해주었다. 이와같이 List, Map 등을 생성할때 괄호안에 여러 타입들을 지정해..