리팩토링이란?시스템의 외부 행위는 바뀌지 않고 기능적 요구는 유지한 상태로 시스템의 내부 구조를 개선하는 것이다. 즉, 프로그램이 작성된 후에 설계를 개선하는 것이다. 리팩토링은 처음 한번에 설계가 올바로 되기 어렵다는 것과 프로그램의 요구가 바뀌면 설게도 계속 바뀌어야 한다는 이해가 깔려 있다. 따라서, 설계를 조금식 점증적으로 전환시키는 기술을 제공하는 것이다. 코드의 크기가 줄어들고 혼란스러운 구조가 단순한 구조로 바뀐다는 장점이 있다. Bad Smell 코드1. 기능 산재 (Shotgun Surgery)변경할 때마다 여러 다른 클래스를 수정해야 하는 경우이다. 예를 들어, 로깅 시스템이 여러 클래스에 걸쳐 구현되어 있어 로깅 방식을 변경할 때마다 모든 관련 클래스를 수정해야 하는 상황이 이에 해당..
반복자 패턴이란?반복자 패턴은 자세한 표현방법을 나타내지 않고, 객체 집합의 요소들을 순차적으로 접근하게 하는데 사용한다. 별도의 이터레이터 객체를 반환 받아 이를 이용해 순회하기 때문에, 집합체의 내부 구조를 노출하지 않고 순회 할 수 있다는 장점이 있고, 리스트 객체와 방문하는 프로세스 사이의 결합을 줄인다. 자바의 컬렉션 프레임워크(JCF)에서 각종 컬렉션을 무리없이 순회할수 있는 것도 내부에 미리 이터레이터 패턴이 적용되어 있기 때문이다.반복자 패턴 사용 법Aggregate (인터페이스) : Iterator의 집합체 컬렉션으로, ConcreateIterator 객체를 반환하는 인터페이스를 제공한다.ConcreateAggregate (클래스) : Aggregate를 구현하는 집합체 구현체Iterat..
데코레이터 패턴이란?데코레이터 패턴은 대상 객체에 대한 기능 확장이나 변경이 필요할 때 객체의 결합을 통해 서브클래스화를 융통적으로 선택할 수 있게 한다. 재귀적 연관을 이용해 객체 체인을 생성하는데 데코레이터 객체에서 시작해 새로운 기능에 대한 책임들을 추가하고, 오리지널 객체에서 마감을 한다. 데코레이터 패턴을 이용하면 필요한 추가 기능의 조합을 런타임에서 동적으로 생성할 수 있다. 데코레이터할 대상 객체를 새로운 행동들을 포함한 특수 장식자 객체에 넣어서 행동들을 해당 장식자 객체마다 연결시켜, 서브클래스로 구성할때 보다 훨씬 유연하게 기능을 확장 할 수 있다. 그리고 기능을 구현하는 클래스들을 분리함으로써 수정이 용이해진다.데코레이턴 패턴 사용 법Component (Interface) : 원본 객..
커맨드 패턴이란?커맨드 패턴은 객체의 메서드(행위)를 클래스로 만들어 캡슐화한 패턴이다. 즉, 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 것이다. 실행될 기능을 캡슐화함으로써 기능의 실행을 요구하는 호출자 Invoker 클래스와 실제 기능을 수행하는 수신자 Receiver 클래스 사이의 의존성을 제거한다. 따라서 실행될 기능의 변경에도 호출자 클래스를 수정 없이 그대로 사용할 수 있도록 해준다. 또한, 작업 요청 자체가 객체가 되기 때문에, 다른 객체처럼 '작업 요청' 자체를 저장하고, 복구하고, 확장할 수 있다.커맨드 패턴 사용 법Command실행될 기능에 대한 인터페이스실행될 기능을 execute 메서드로 선언ConcreteCommand실제로 실..
전략 패턴이란?전략 패턴은 알고리즘의 패밀리를 정의해 캡슐화하고 서로 교환 가능하게 하는 패턴이다. 따라서, 런타임 중에 알고리즘 전략을 선택해 객체 동작을 실시간으로 바뀌도록 할 수 있게 한다. 어떤 일을 수행하는 알고리즘이 여러가지일때 알고리즘 변형이 빈번하게 필요한 경우에 적합하다. 전략 패턴 사용 법ConcreteStarategy: 알고리즘, 행위, 동작을 객체로 정의한 구현체Strategy 인터페이스 : 모든 전략 구현제에 대한 상위 인터페이스Context : 알고리즘을 실행해야 할 때마다 해당 알고리즘과 연결된 전략 객체의 메소드를 호출.클라이언트 : 특정 전략 객체를 컨텍스트에 전달 함으로써 전략을 등록하거나 변경하여 전략 알고리즘을 실행한 결과를 누린다.// 전략(추상화된 알고리즘)in..
상태 패턴이란?상태패턴은 객체가 특정 상태에 따라 행위를 다르게 할 때, 직접 상태를 조건문으로 검색해서 행위를 다르게 하는 것이 아니라 상태를 객체화해 상태가 행동을 할 수 있도록 위임하는 패턴이다.상태란 객체가 가질 수 있는 어떤 조건이나 상황을 의미한다.예를 들어 티비가 켜져 있는 상태라면 음량 버튼을 누르면 음량이 증가하거나 감소한다. 하지만 티비가 꺼져있는 상태라면 음량버튼을 아무리 눌러도 티비의 음량은 바뀌지 않는다. 즉, 티비 전원의 상태에 따라 메소드 행동이 바뀌는 것이다. 이처럼 객체가 특정 상태에 따라 행위를 달리하는 상황에서 사용되는 최적의 패턴이 스테이트 패턴이다.상태 패턴의 사용 법State 인터페이스 : Context 객체의 현재 상태에 따라 다른 행위를 하는 함수들의 인터페이스..
템플릿 메소드 패턴이란?템플릿 메소드 패턴은 여러 클래스에서 공통으로 사용하는 메서드를 템플릿화 하여 상위 클래스에서 정의하고, 하위 클래스마다 세부 동작 사항을 다르게 구현하는 패턴이다. 즉, 변하지 않는 기능(템플릿)은 상위 클래스에 만들어두고 자주 변경되며 확장할 기능은 하위 클래스에서 만들도록 하여, 코드의 중복을 막고 하위 클래스에서 확장을 제어할 수 있도록 한다. 템플릿 메소드 패턴 사용 법Template(추상 클래스)하위 클래스에서 구현해야 할 추상 primitive 오퍼레이션들을 정의알고리즘의 기본 골격을 구성하는 템플릿 메소드를 구현ConcreteClass(구현 클래스)템플릿 메소드에서 이용될 primitive operation들을 구현-> ConcreteClass는 변동되는 부분을 구현..
메멘토 패턴이란?메멘토 패턴은 객체의 구현 세부 사항을 공개하지 않으면서 해당 객체의 이전 상태를 저장하고 복원할 수 있게 해주는 패턴이다. 객체를 이전 상태로 복원할 수 있도록 상태 정보를 어딘 가에 저장해야 한다. 그러나 객체는 일반적으로 상태의 일부 또는 전부를 캡슐화하므로 다른 객체에 액세스할 수 없고 외부에 저장할 수 없다. 이 상태를 노출하면 캡슐화를 위반하여 애플리케이션의 안정성과 확장성을 손상시킬 수 있기 때문이다. 메멘토 패턴 사용 법OriginatorMemento를 이용해 스냅샷들을 생성한다.Memento를 이용해 복원할 수도 있다. MementoOriginator 객체의 스냅샷 역할을 하는 값 객체.Originator 객체 이외의 다른 객체(CareTaker)에서 상태 정보로의 접근..
- Total
- Today
- Yesterday
- Iterator Pattern
- 양방향연관관계
- idtoken
- restapi
- 반복자 패턴
- docker
- 플라이웨이트패턴
- 상태 패턴
- 프로토타입 패턴
- GithubActions
- springsecurity
- java문법
- 프록시패턴
- 컴포지트패턴
- 책임체인패턴
- 복합체 패턴
- CompositePattern
- 구글로그인
- UML 필요성
- 메멘토 패턴
- jpa
- n+1
- 빌더 패턴
- 브리지 패턴
- dfs
- 퍼싸드패턴
- Flutter
- FacadePattern
- Chain of Responsibility
- 책임연쇄패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |