🔥딱 8일간! 인프런x토스x허먼밀러 역대급 혜택

블로그

[학습일기] 디자인 패턴 관련 학습 정리 - 실습 관련

개요스프링 입문 강의의 예제 코드 강의를 보고 따라해보면서 모듈화를 하는 전략에 대해서 고민하고 어느 정도 정해진 루틴을 생각해보았습니다.기본적으로 이 정해진 루틴으로 초안을 작성하고 나서 상황에 맞는 리팩토링하는 방법으로 빠르게 설계 및 구현을 시도해볼 계획입니다. 루틴먼저 구현하고자 하는 기능을 책임으로 나눕니다.책임을 더 작은 책임들로 분할합니다.이 때 책임의 분할에 도움이 되는 전략으로는 다음을 사용하였습니다.책임을 수행하기 위해 필요한 정보에 따라서 분할하였습니다.예를 들면 어떤 정보는 객체를 생성할 때만 필요하고 사용할 때는 필요하지 않을 수 있습니다.이 이유로 저번 블로그 글에서 디자인 패턴을 관심사의 분리 측면에서 관찰하게 되었습니다.같은 맥락에서 사용되고 변하는 정보의 경우 맥락을 객체로 캡슐화하였습니다.다른 맥락에서 사용되는 정보의 경우, 다른 객체에서 정보를 제공할 수 있도록 책임을 분할하거나, 분할이 어려운 경우 고차함수를 이용해서 책임을 따로따로 주입할 수 있도록 하였습니다.지금 생각났는데 일단 구현하고 나서 리팩토링하는 것도 시도해볼 만한 전략인 것 같습니다.예시많이 많이 부끄럽습니다만 해당 커밋에 코멘트 형식으로 사고 과정을 달아놓았습니다.원래 공개할 계획이 없던 리포지토리다 보니 깔끔하지 못한 부분이 있습니다. 죄송합니다ㅠㅠ앞으로는 비공개 리포도 깔끔하게 정리해야겠습니다.

개발 · 프로그래밍 기타객체지향디자인패턴학습일기

윤대

[디자인 패턴] 싱글톤 패턴

싱글톤 패턴(Singletone Pattern)정의 : 유일한 객체를 만들기 위한 코드 패턴장점 : 인스턴스를 추가로 생성하지 않고, 기존에 생성된 인스턴스를 재사용하기 때문에 리소스를 절약할 수 있다.단점 : 대표적인 객체 지향의 안티 패턴,싱글톤 객체에 여러 모듈이 의존하면서 결합도 상승 (OCP 위배)싱글톤 객체가 지는 책임이 많음 (SRP 위배)모듈들이 인터페이스가 아니라 구체적인 객체에 의존하게 만듦 (DIP 위배)단, 스프링 프레임워크를 사용하면 Ioc(Inversion Of Control)를 통해 일반 객체도 싱글톤 객체처럼 쓸 수 있게 함으로 싱글톤의 단점을 상쇄할 수 있다.구현Bill Pugh Solution (LazyHolder) -> 장: 필요할 때 로드되어 성능이 좋음 단: 클라이언트가 임의로 싱글톤 파괴 가능class Singleton { private Singleton() {} // static 중첩 클래스 사용 // Holder를 통해 클래스 로드 시점을 getInstance의 메소드 호출 시점으로 미룸(Lazy) // 유일한 객체 생성을 위해 생성자 private private static class SingleInstanceHolder { private static final Singleton INSTANCE = new Singleton(); } public static Singleton getInstance() { return SingleInstanceHolder.INSTANCE; } }Enum -> 장: 클라이언트가 임의로 싱글톤 파괴 불가능 단: 멀티톤으로 전환 시 코드를 다시 작성해야 함enum SingletonEnum { INSTANCE; private final Client dbClient; SingletonEnum() { dbClient = Database.getClient(); } public static SingletonEnum getInstance() { return INSTANCE; } public Client getClient() { return dbClient; } } public class Main { public static void main(String[] args) { SingletonEnum singleton = SingletonEnum.getInstance(); singleton.getClient(); } }참고 글: https://inpa.tistory.com/entry/JAVA-☕-열거형Enum-타입-문법-활용-정리 [Inpa Dev 👨‍💻:티스토리]

백엔드디자인패턴싱글톤

채널톡 아이콘