본문 바로가기

java18

팩토리 메서드 패턴 인스턴스 작성을 하위 클래스에 위임 Template Method 패턴을 인스턴스 생성에 적용함 의도 객체를 생성하기 위한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 상속받은 서브 클래스에서 구현함 여러 상황, 조건에 따라 각각 생성할 수 있는 객체에 대한 생성을 하위 클래스에 위임함 생성과 관련된 동일한 메서드는 상위 클래스에서 처리한다. package factorymethod; public abstract class CarFactory { public abstract Car createCar(String name); public abstract Car returnCar(String name); public void numbering() { System.out.println.. 2023. 2. 14.
08. 상속을 위임으로 바꾸기 IS-A 관계와 HAS-A 관계 IS-A 관계 일반적인 클래스와 구체적인 클래스의 관계 클래스간의 상속은 종속성이 강하므로 꼭 필요한 경우 사용하는 것이 좋다. 상속은 코드 재사용을 위한 방법이 아니다. HAS-A 관계 이미 잘 만들어진 라이브러리나 클래스를 재사용하는 방법 사용할 클래스를 포함하여 그 기능을 해당 클래스로 위임한다. 클래스간의 종속성이 약하다. 이미 잘 만들어진 클래스를 재사용하기 위해서는 상속이 아닌 위임을 사용한다. IS-A 관계가 아닌 클래스간의 상속은 HAS-A로 리팩토링 한다. 상속 상속은 좀 더 일반적인 클래스에서 그보다 구체적인 클래스가 여러개 생길 수 있는 경우에 사용한다. 상속을 통한 방법은 결합도가 강하기 때문에, 코드의 재사용의 목적으로는 사용하지 않는 것이 좋다. .. 2023. 2. 12.
07. 전략, 상태패턴 적용하기 상태 패턴 클래스 내의 여러 메서드가 하나의 상태(멤버 변수)에 의존하여 switch 문이 만들어지는 경우 하나의 메서드에서 각 상태에 따라 수행하는 로직이 다른 경우 각 상태를 클래스로 만들고 수행하는 로직은 각 클래스에 작성한다. 여러 상태가 추가되는 경우 확장이 용이하고, 상태의 전환에 대해 인스턴스를 바꾸어주면 되므로 유지보수가 쉽다. 전략 패턴 어떤 로직에 대해 여러 알고리즘(전략, 정책)이 있을 수 있는 경우 상황에 따라 전략을 교체할 수 있고, 선택이 추가될 수 있음 각 전략이 해결해야 하는 동일한 메서드가 존재함 메서드에 전략에 따른 다른 수행이 있음 전략마다 클래스로 만들고, 각 클래스에서 해당하는 로직을 수행하도록 하는 메서드 구현 상태 패턴과 전략 패턴 두 패턴 모두 상속과 오버라이딩.. 2023. 2. 11.
06. 생성자를 팩토리 메서드로 바꾸기 생성자로 인스턴스를 생성하고 싶지 않을 때 new 키워드로 객체를 생성하면 클래스의 이름이 노출됨 (되면 안되나?) Employee employee = new Employee(); 생성되는 클래스의 이름을 숨기거나, 상황에 따라 인스턴스의 생성이 가능하도록 하고자 할 때 컴파일 시간이 아닌 실행시간에 생성되는 인스턴스가 결정되어야 할 때 리팩토링과 디자인 패턴이 정답은 아니다. 이렇게 하면 좋고, 이렇게 하면 좀 더 객체지향적이고 이렇게 하면 좀 더 유지보수가 쉽다. 이 프로그램을 계속 써야 할 경우 어떻게 하면 좀 더 유연하게 만들어서 업그레이드 하는데 시간을 덜 들이는게 목적. 그러기 위하여 객체지향적으로 만들고 리팩토링을 해서 좀 더 코드를 유지보수를 쉽게 하는 것 고객 등급이 계속 늘어날 것으로 .. 2023. 2. 10.