분류 전체보기 195

[Java][디자인 패턴] 7. 어댑터 패턴 (Adapter Pattern)

디자인패턴 [Java][디자인 패턴] 7. 어댑터 패턴 (Adapter Pattern) 어댑터 패턴이란 코드를 재사용하기 위해 구조를 변경하는 패턴이다. 어댑터 패턴이란? 어댑터 패턴은 기존 코드를 재사용하기 위해 내적, 외적 구조를 변환하는 작업을 처리한다. 어댑터 패턴은 코드를 재사용하기 위한 인터페이스를 처리하고 인터페이스를 활용해 보정 코드를 사용한다. 어댑터 패턴은 기능상 문제없이 동작하는 코드가 단지 인터페이스 차이 때문에 사용할 수 없는 경우 많이 응용되는 패턴이다. 또 기존 코드에 오류가 있거나 보정 작업이 필요한 경우에도 유용하다. 어댑터 패턴은 오래된 레거시 코드나 라이브러리를 재사용할 때 유용한 패턴이다. 또한 어댑터 패턴은 서로 호환되지 않는 인터페이스를 가진 코드를 결함 하여 응용..

[Java][디자인 패턴] 6. 프로토타입 패턴 (Prototype Pattern)

디자인패턴 [Java][디자인 패턴] 6. 프로토타입 패턴 (Prototype Pattern) 프로토타입 패턴은 new 키워드를 사용하지 않고 객체를 복제해 생성하는 패턴이다. 프로토타입 패턴이란? new 키워드를 통해 객체를 생성하는데 비용이 많이 든다면 프로토타입 패턴을 통해 객체를 복제하는 것도 방법이 될 수 있다. 객체를 복제하면 인스턴스화 과정이 생략되어 생성 로직에 소모되는 처리 비용과 자원을 절약할 수 있다. 프로토타입 패턴 구조 한 개발자를 생성해서 스킬을 업데이트하고 개발 언어와 연차를 업그레이드할 수 있는 메서드가 있다고 해보자. 우선 생성자에서는 개발자의 이름과 연차(1년 차)를 초기화하고, Languege, Skill은 빈 HashMap으로 초기화되어있다. 이 상황에서 차곡차곡 up..

[Java][디자인 패턴] 5. 빌더 패턴 (Builder Pattern)

디자인패턴 [Java][디자인 패턴] 5. 빌더 패턴 (Builder Pattern) 빌더 패턴은 추상 팩토리를 확장하여 크고 복잡한 객체를 생성할 수 있다. 빌더 패턴이란? 빌더 패턴은 복잡한 구조를 가진 복합 객체의 생성 과정을 분리하여 처리하는 패턴이다. 복합 객체의 생성 과정을 단계별로 분리함으로써 복합 객체의 생성을 일반화할 수 있다. 추상 클래스인 Builder는 추상 메서드 build()를 선언한다. build()는 복합 객체를 생성하는 로직을 하위 클래스에 위임한다. 빌더 패턴 구조 빌더 패턴을 사용하여 만든 각자의 환경에 맞는 Office를 구성하는 예시 코드이다. (예시 코드를 조금 대충 만든 것 같기도 한데 그냥 빌더 패턴 구조를 파악하는데 의의를 두자) 빌더 패턴 코드 1.Build..

[Java][디자인 패턴] 4. 추상 팩토리 패턴 (Abstract Factory Pattern)

디자인패턴 [Java][디자인 패턴] 4. 추상 팩토리 패턴 (Abstract Factory Pattern) 추상 팩토리 패턴은 팩토리 메서드 패턴을 확장한 패턴이다. 추상 팩토리 패턴이란? 추상 팩토리 패턴은 팩토리 메서드 패턴을 확장한 패턴이다. 이 말은 즉슨, 팩토리 메서드를 여러 개를 만들고 그룹핑해서 하나로 관리할 수 있도록 만든 게 추상 팩토리 패턴이라고 볼 수 있다. 팩토리 패턴 vs 팩토리 메서드 패턴 vs 추상 팩토리 패턴 팩토리 패턴 vs 팩토리 메서드 패턴 추상화의 여부로 알 수 있다. 팩토리는 바로 클래스들의 생성을 한 곳에 모아서 new로 관리해주고, 팩토리 메서드는 추상화한 상위 클래스 아래에 하위 클래스를 두고, 실제 객체의 생성은 하위 클래스에게 위임한다. (선언과 구현을 분..

[Java][디자인 패턴] 3. 팩토리 메서드 패턴 (Factory Method Pattern)

디자인 패턴 [Java][디자인 패턴] 3. 팩토리 메서드 패턴 (Factory Method Pattern) 팩토리 메서드 패턴은 팩토리 패턴의 확장 패턴으로, 팩토리 패턴과 템플릿 메서드 패턴이 결합된 패턴이다. 팩토리 메서드 패턴이란? 팩토리 메서드는 추상화 기법을 사용하여 패턴을 확장한다. 추상화를 사용하면 아직 실제 내용이 구현되지 않은 상태에도 미리 메서드를 호출하여 사용할 수 있다. 팩토리 메서드 패턴은 객체를 생성하는 뼈대를 형성할 때 자주 응용한다. 팩토리 메서드는 추상화를 통해 하위 클래스에 다형성을 부여한다. 팩토리 메서드 패턴은 클래스 결합도가 낮고 유연성이 좋다. 또한 기능 개선 시 기능을 보완하기 위한 리팩터링 작업도 관리한다. 팩토리 메서드 패턴 vs 팩토리 패턴 팩토리 패턴 객..

[Java][디자인 패턴] 2. 싱글턴 패턴 (Singleton Pattern)

디자인 패턴 [Java][디자인 패턴] 2. 싱글턴 패턴 (Singleton Pattern) 싱글턴은 생성 패턴으로, 다른 생성 패턴과 달리 클래스에서 하나의 객체만 생성할 수 있도록 제한하는 패턴으로, 생성된 객체는 공유되어 어디서든 접근할 수 있다. 싱글턴 패턴은 언제 사용할까? 공유 자원 접근 복수의 시스템이 하나의 자원에 접근할 때 유일한 객체가 필요할 때 값의 캐시가 필요할 때 싱글턴 패턴에서는 어떻게 객체를 하나로 보증할까? 생성자의 접근 속성을 private으로 하여 외부에서 생성자에 접근할 수 없도록 한다. 내부 참조체를 통해 자신의 객체를 보관하고, new 키워드 대신 객체 생성 메서드를 호출하여 객체를 가져온다. 이때, getInstance 메서드는 정적 메서드로 만들고 객체가 없을 경..

[Java][디자인 패턴] 1. 팩토리 패턴 (Factory Pattern)

디자인패턴 [Java][디자인 패턴] 1. 팩토리 패턴 (Factory Pattern) 객체 생성 과정을 담당할 별도의 클래스를 선언하여 생성되는 객체의 구조를 느슨한 관계로 변경할 수 있다. 팩토리 패턴이란? 팩토리 패턴은 객체 생성 과정을 분리하여 처리한다. 객체 생성 과정에서 발생하는 new 키워드의 문제점을 해결하고 느슨한 객체 생성을 관리할 수 있다. 팩토리 패턴과 프록시 패턴을 결합하면 객체 생성을 위임받을 때 권한에 따라 접근하는 것을 제어할 수 있다. 단순 팩토리 패턴은 메서드를 통해 객체 생성을 관리할 수 있다. 팩토리 패턴 구조 예제 코드로 작성한 Coffee를 Americano, CafeLatte, VanillaLatte와 같은 종류별로 생성하는 CoffeeFactory라는 예제 코드..

2021 나의 책 리스트

책 2021년 나의 책 리스트 2021년에 내가 읽은 책은 어떤 것이 있을까? 노션에 책을 읽은 정리하고 개인적인 평점을 매겨보았다. 개발 책 2021년 읽은 개발 책은 총 세권! (완독 한 거는 세 권인 듯. 중간에 읽다가 만 것도 나중에 완독 해야지 ㅎㅎ) 1. Effective Java (노션 링크) Effective Java는 밋코더라는 스터디를 통해 다른 사람들과 함께 읽었다. 매주 아이템 하나를 준비해 발표하고 나머지 5~6개의 아이템들은 읽어보고 온 뒤 다른 사람이 발표하면 관련해서 질문을 하거나 느낀 점을 공유하는 식으로 진행했는데 스터디 덕분에 겨우 끝까지 완독 할 수 있었다. 책을 혼자 읽으면서는 고민만 하던 부분을 다른 사람들과 함께 얘기해볼 수 있어서 좋았고, 다른 회사에서는 어떤 ..

2022.02.03

[Github] Git Commit 이력 변경 - 작성자(Author), 커밋 날짜(CommitDate) 변경하기

Git Git Commit 이력 변경 - 작성자(Author), 커밋 날짜(CommitDate) 변경하기 Github 레포에 공부하고 코드를 작성해서 올리다가 히스토리를 확인했다. 아차.. 일도 개발 공부도 회사 PC로 하다 보니 레포에 커밋들이 회사 Github 계정으로 들어갔다. 개인 계정으로 넣을 레포를 생성했으면 로컬 git config를 개인 계정으로 변경하고 했어야 하는데... 이와 같이 Commit 작성자(Author)를 잘못 넣은 경우나 실제 코드는 이전에 작성했는데 깜빡하고 커밋을 안 해서 같은 날 여러 개를 올리게 되어 Commit 날짜를 변경하고 싶은 경우 아래와 같이 수정하면 커밋 이력을 변경할 수 있다. 1. Git Config 작성자 변경 1. git config로 해당 레포의 ..

개발/Git 2022.01.31

노션 데이터베이스 달성률 작성하기 (소수점 버림)

0. 개요 노션 데이터베이스에 특정 데이터의 비율을 작성하고 싶은 경우 유용하게 사용할 수 있다. 내 경우에는 “올해 모은 목돈 / 목표 저축액”의 비율을 달성률로 작성하고 싶어 사용했다. 1. 데이터베이스에 속성을 수식으로 작성 데이터베이스의 속성을 수식으로 선택한다. 그리고 수식 편집을 이용하면 데이터베이스 내 값들을 활용하여 다양한 값을 추출해 낼 수 있다. 2. 수식 작성 기본적으로 prop으로 데이터베이스에서 가져올 값을 선택하여 비율을 구할 수 있다. 예를 들어, prop(“올해 모은 목돈”) / prop(“올해 목표 저축액”) 으로 각 필드를 가져와 나누면 비율을 구할 수 있으나 소숫점까지 표현되어 값이 지저분하게 표기된다는 문제가 있다. 3. 소수점 버리기 수식 작성 소숫점이 함께 작성되는..

개발/꿀팁 2021.12.28