본문 바로가기

Java7

스프링 패키지 구조(Spring Package Structure) - 계층형 vs 도메인형 주절주절,,🗣 회사 프로젝트가 기존에는 모두 계층형이었으나, 이번에 한 프로젝트를 전체 리팩토링 하면서 도메인형으로 변경하게 되었다. 이로써 이제 계층형과 도메인형도 혼합되어 존재하게 되었는데, 앞으로는 모두 도메인형으로 바꿀까? 요즘 도메인형이 더 선호되는 것 같기도 하지만, 개인적으로 무조건 도메인형이 좋다고 생각되진 않는다. 그래서 나름의 기준을 가지기 위해 간단히 정리해보았다. 패키지 구성은 크게 두 가지 유형이 있다. 1️⃣ 계층형 2️⃣ 도메인형 계층형 ex) Application.java └ /controller └ /service └ /repository 장점 해당 프로젝트에 이해가 상대적으로 낮아도 전체적인 구조를 빠르게 파악할 수 있음 단점 디렉토리에 클래스들이 너무 많이 모이게 됨 모.. 2022. 5. 14.
[디자인 패턴] Strategy Pattern(전략 패턴, 스트레티지 패턴) Strategy Pattern 전략 바꾸기 학습 목표 인터페이스 개념을 이해한다. 델리게이트 개념을 이해한다. 전략 패턴 개념을 이해한다. 인터페이스 키보드나 디스플레이 따위처럼 사람과 컴퓨터를 연결하는 장치 기능에 대한 선언과 구현 분리 기능을 사용 통로 델리게이트 위임하다 스트레티지 패턴 여러 알고리즘을 하나의 추상적인 접근점을 만들어 접근 점에서 서로 교환 가능하도록 하는 패턴 기본 설계 요구 사항 신작 게임에서 캐릭터와 무기를 구현해보세요. 무기는 두 가지 종류가 있습니다. 칼 검 유지 보수 요청 무기 중에 도끼를 추가해주세요 Class Diagram Weapon.class public interface Weapon { public void attack(); } Knife.class public .. 2020. 7. 20.
[디자인 패턴] Factory Method Pattern(팩토리 메소드 패턴) Factory Method Pattern 생성의 템플릿 메소드 패턴 학습 목표 팩토리 메소드 패턴에서 템플릿 메소드 패턴이 사용됨을 안다. 팩토리 메소드 패턴에서의 구조와 구현의 분리를 이해하고 구조와 구현의 분리의 장점을 안다. 유연성 ! → 다른 아이템 생성할 때 Item과 Creator만 생성하면 다른 코드의 변화가 없음 기본 설계 예제 요구 사항 게임 아이템과 아이템 생성을 구현해주세요. 아이템을 생성하기 전에 데이터베이스에서 아이템 정보를 요청합니다. 아이템을 생성 후 아이템 복제 등의 불법을 방지하기 위해 데이터베이스에 아이템 생성 정보를 남깁니다. 아이템을 생성하는 주체를 ItemCreator로 이름 짓습니다. 아이템은 item이라는 interface로 다룰 수 있도록 합니다. item은 u.. 2020. 7. 19.
[디자인 패턴] Template Method Pattren(템플릿 메소드 패턴) 템플릿 메소드 패턴(Template Method Pattren) 공통적인 프로세스를 묶어 주기 학습 목표 일정한 프로세스를 가진 요구사항을 템플릿 메소드 패턴을 이용하여 구현할 수 있다. 알고리즘의 구조를 메소드에 정의하고 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의하는 패턴 수정할 때는 구현 클래스만 수정 효과적인 유지 보수 가능 기본 설계 어떨 때 사용하는 가 구현하려는 알고리즘이 일정한 프로세스가 있다. 여러 단계로 나눌 수 있다. 구현하려는 알고리즘이 변경 가능성이 있다. 사용하는 단계 알고리즘을 여러 단계로 나눈다. 나눠진 알고리즘의 단계를 메소드로 선언한다. 알고리즘을 수행할 템플릿 메소드를 만든다. 하위 클래스에서 나눠진 메소드들을 구현한다. 예제 요구 사항 신작 게임의 접속을.. 2020. 7. 19.