Song's Tech Blog

기술 블로그

디자인 패턴과 프레임워크

“OBJECTS 15장” 디자인 패턴 소프트웨어 설계에서 반복적으로 발생하는 문제에 대해 반복적으로 적용할 수 있는 해결 방법 목적 : 설계의 재사용 다양한 변경을 다루기 위해 반복적으로 재사용할 수 있는 설계 묶음 특정한 변경을 일관성 있게 다룰 수 있는 협력 템플릿 제공 협력을 일관성 있게 만들기 위해 재사용할 수 있는 설계의 묶음 프레......

일관성 있는 협력

“OBJECTS 14장” 가능하면 유사한 기능을 구현하기 위해 유사한 협력 패턴을 사용 일관성 있는 협력 패턴을 적용하면 코드가 이해하기 쉽고 직관적이며 유연해짐 핸드폰 과금 시스템 변경하기 고정요금 방식 구현하기1234567891011121314public class FixedFeePolicy extends BasicRatePolicy ......

서브클래싱과 서브타이핑

“OBJECTS 13장” 상속 용도 타입 계층 구현 부모 클래스는 자식 클래스의 일반화 자식 클래스는 부모 클래스의 특수화 코드 재사용 상속을 사용하는 일차적인 목표는 코드 재사용이 아니라 타입 계층을 구현하는 것이어야 한다. 타입개념 관점의 타입 타입의 인스턴스 객체 자바, 루비, 자바스크립트, C는 프로그래밍 언어의 인......

양방향 연관관계 주의사항

“JPA” 기본 설정 항상 양쪽에 값을 설정하자연관관계 주인 이 아닌 쪽에 값 설정 시123456789101112Member member = new Member();member.setUsername("member1");entityManager.persist(member);Team team = new Team();team.setUse......

다형성

“OBJECTS 12장” 다형성 다형성 하나의 추상 인터페이스에 대해 코드를 작성, 서로 다른 구현을 연결할수 있는 능력 여러 타입을 대상으로 동작할 수 있는 코드를 작성할수 있는 방법 싱속의 일차적 목적은 코드 재사용이 아닌 서브타입의 구현 다형성 종류 오버로딩 다형성 하나의 클래스 안에 동일한 이름의 메서드가 존재하는 경우 ......

합성과 유연한 설계

“OBJECTS 11장” 상속 부모 클래스 재사용 의존성이 컴파일 타임에 해결 is-a 관계 정적인 관계 화이트박스 재사용 합성 부분 객체의 코드 재사용 의존성이 런타임에 해결 has-a 관계 구현에 의존하지 않음 동적인 관계 블랙박스 재사용 상속을 합성으로 변경하기12345678910111213141516171819public cla......

@GeneratedValue(strategy = GenerationType.IDENTITY) : 기본키 영속성 관리

“JPA” 기본키 매핑JPA 는 크게 직접 할당과 자동생성 으로 기본키를 매핑한다. 여기서 살펴볼 애노테이션은 @GeneratedValue(strategy = GenerationType.IDENTITY) 이다. 직접 할당: @Id만 사용 자동 생성(@GeneratedValue) IDENTITY : 데이터베이스에 위임(MYSQL) Auto_Incr......

상속과 코드 재사용

“OBJECTS 10장” 상속과 중복 코드DRY 원칙: 모든 지식은 시스템 내에서 단일하고, 애매하지 않고, 정말로 믿을 만한 표현 양식을 가져야 한다. 중복코드는 변경을 방해 중복 여부를 결정하는 기준은 코드가 변경에 반응하는 방식 DRY 원칙 Don’t Repeat Yourself Once and Only Once(한번, 단 한번) 원칙......

유연한 설계

“OBJECTS 9장” 개팡-폐쇄 원칙(Open-Closed Principle, OCP) 소프트웨어 개체(클래스, 모듈, 함수 등등)은 확장에 대해 열려있어야 하고, 수정에 대해서는 닫혀 있어야 한다. 확장에 대해 열려 있다 애플리케이션의 요구사항이 변경될 때 이 변경에 맞게 새로운 동작 을 추가해서 애플리케이션의 기능을 확장할 수 있음 수......

의존성 관리하기

“OBJECTS 8장” 잘 설계된 객체지향 애플리케이션은 작고 응집도 높은 객체 들로 구성된다. 또한 이런 작은 객체들이 단독으로 수행할 수 있는 작업은 없기 때문에 다른 객체에게 도움을 요청해야 한다. 이런 요청들이 객체 사이의 협력을 낳는다. 협력은 객체가 다른 객체에 대해 알 것을 강요하고 이런 지식들이 객체 사이의 의존성을 낳는다. 과도한......