분류 전체보기590 07. 전략, 상태패턴 적용하기 상태 패턴 클래스 내의 여러 메서드가 하나의 상태(멤버 변수)에 의존하여 switch 문이 만들어지는 경우 하나의 메서드에서 각 상태에 따라 수행하는 로직이 다른 경우 각 상태를 클래스로 만들고 수행하는 로직은 각 클래스에 작성한다. 여러 상태가 추가되는 경우 확장이 용이하고, 상태의 전환에 대해 인스턴스를 바꾸어주면 되므로 유지보수가 쉽다. 전략 패턴 어떤 로직에 대해 여러 알고리즘(전략, 정책)이 있을 수 있는 경우 상황에 따라 전략을 교체할 수 있고, 선택이 추가될 수 있음 각 전략이 해결해야 하는 동일한 메서드가 존재함 메서드에 전략에 따른 다른 수행이 있음 전략마다 클래스로 만들고, 각 클래스에서 해당하는 로직을 수행하도록 하는 메서드 구현 상태 패턴과 전략 패턴 두 패턴 모두 상속과 오버라이딩.. 2023. 2. 11. 06. 생성자를 팩토리 메서드로 바꾸기 생성자로 인스턴스를 생성하고 싶지 않을 때 new 키워드로 객체를 생성하면 클래스의 이름이 노출됨 (되면 안되나?) Employee employee = new Employee(); 생성되는 클래스의 이름을 숨기거나, 상황에 따라 인스턴스의 생성이 가능하도록 하고자 할 때 컴파일 시간이 아닌 실행시간에 생성되는 인스턴스가 결정되어야 할 때 리팩토링과 디자인 패턴이 정답은 아니다. 이렇게 하면 좋고, 이렇게 하면 좀 더 객체지향적이고 이렇게 하면 좀 더 유지보수가 쉽다. 이 프로그램을 계속 써야 할 경우 어떻게 하면 좀 더 유연하게 만들어서 업그레이드 하는데 시간을 덜 들이는게 목적. 그러기 위하여 객체지향적으로 만들고 리팩토링을 해서 좀 더 코드를 유지보수를 쉽게 하는 것 고객 등급이 계속 늘어날 것으로 .. 2023. 2. 10. 05. if-else, if-switch 문의 분류 코드를 하위 클래스로 만들기 특정 조건(상태)에 따라, 값을 다르게 응답해줘야 하는 메서드가 많은 경우 리팩토링 가능한 방법 if문으로 분기치는 것이 아닌 특정 조건(상태)에 따른 하위 클래스를 작성하고, 하위클래스에 메서드의 로직을 구현하여 if문 없는 로직으로 구현 가능함. 새로운 조건(상태, 아래 예시에서는 VIP Customer)가 추가되면 다른 java 파일에 상속받은 하위 클래스를 생성하고 로직 구현하면 되어서 확장성은 좋고 기존 코드에서의 변경에는 닫혀있는 방법임. if - else if, switch 문으로 분류 코드를 사용할 때 발생 가능한 문제점 조건 추가 시 조건에 따른 if 문 지속 추가 필요 특정 조건일 때 로직 수정/추가 되는 경우 해당 타입 관련있는 여러 메서드 if문 분기 부분 에서 해당 내용 수정해야 .. 2023. 2. 8. 04. 분류 코드를 클래스로 만들기 분류 코드를 사용할 때의 문제점 기본 타입 분류 코드 : 객체의 종류를 특정 값으로 나타낸다 BOOK:0, TOY:1, BREAD:2, APPLE:3 등 실수로 정의 하지 않은 값이 들어갈 수 있음 다른 그룹의 분류 코드와 혼란 일으킬 가능성 존재 컴파일시에 정의되지 않은 코드 넣어도 에러 발생하지 않음. 아래는 안 좋은 예시 public static final int BOOK = 0; public static final int FOOD = 1; public static final int TOY = 2; new Category(100); // 문제 부분, 100 값은 정의되어 있지 않아서 오류지만 컴파일 에러 없음 리팩토링 순서 - 분류 코드를 클래스로 치환하기 새로운 분류 코드 클래스를 작성하여 기존 .. 2023. 2. 8. 이전 1 ··· 39 40 41 42 43 44 45 ··· 148 다음