본문 바로가기

Java27

Design Patterns - Composite 그룹 전체와 개별 객체를 동일하게 처리할 수 있는 패턴 클라이언트 입장에서는 '전체'나 '부분'이나 모두 동일한 컴포넌트로 인식할 수 있는 계층 구조를 만든다 (Part-Whole Hierarchy) public interface Component { int getPrice(); } 계층 구조에 사용할 공통 Component 인터페이스를 정의한다 public class Item implements Component { private String name; private int price; public Item(String name, int price) { this.name = name; this.price = price; } @Override public int getPrice() { return thi.. 2021. 11. 29.
Design Patterns - Bridge 추상적인 것과 구체적인 것을 분리하여 연결하는 패턴 하나의 계층 구조일 때 보다 각기 나누었을 때 독립적인 계층 구조로 발전시킬 수 있다. public interface Skin { String getName(); } public interface Champion extends Skin { void move(); void skillQ(); void skillW(); void skillE(); void skillR(); } public class DefaultChampion implements Champion { private Skin skin; private String name; public DefaultChampion(Skin skin, String name) { this.skin = skin; th.. 2021. 11. 28.
Design Patterns - Adapter 기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴 클라이언트가 사용하는 인터페이스를 따르지 않는 기존 코드를 재사용할 수 있게 해준다 public class LoginHandler { UserDetailsService userDetailsService; public LoginHandler(UserDetailsService userDetailsService) { this.userDetailsService = userDetailsService; } public String login(String username, String password) { UserDetails userDetails = userDetailsService.loadUser(username); if (userDetails.. 2021. 11. 24.
Design Patterns - Prototype 기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법 복제 기능을 갖추고 있는 기존 인스턴스를 프로토타입으로 사용해 새 인스턴스를 만들 수 있다. public class GithubIssue implements Cloneable { private int id; private String title; private GithubRepository repository; public GithubIssue(GithubRepository repository) { this.repository = repository; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { retur.. 2021. 11. 22.
Design Patterns - Builder 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법 복잡한 객체를 만드는 프로세스를 독립적으로 분리할 수 있다. public interface TourPlanBuilder { TourPlanBuilder nightsAndDays(int nights, int days); TourPlanBuilder title(String title); TourPlanBuilder startDate(LocalDate localDate); TourPlanBuilder whereToStay(String whereToStay); TourPlanBuilder addPlan(int day, String plan); TourPlan getPlan(); } TourPlan 객체를 만들기 위한 인터페이스이다. TourPlan에 .. 2021. 11. 21.
Design Patterns - Abstract Factory 서로 관련있는 여러 객체를 만들어주는 인터페이스 구체적으로 어떤 클래스의 인스턴스(concrete protuct)를 사용하는지 감출 수 있다 public interface ShipPartsFactory { Anchor createAnchor(); Wheel createWheel(); } public interface Anchor { } public interface Wheel { } public class WhiteShipFactory extends DefaultShipFactory { private final ShipPartsFactory shipPartsFactory; public WhiteShipFactory(ShipPartsFactory shipPartsFactory) { this.shipPart.. 2021. 11. 20.