일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- selenium
- github
- 클린 코드
- Python
- PostgreSQL
- Word Cloud
- 프로그래머스 코딩테스트 연습문제
- github actions
- PostgreSQL 설치 시 에러
- heroku
- Codeforces
- c#
- pycharm
- git
- 프로그래머스 월간 코드 챌린지 시즌1
- 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
- FastAPI
- 바이오데이터 엔지니어
- 스코페2021
- 프로그래머스 코딩 테스트 연습
- WPF
- 파이썬
- 디자인 패턴
- 애드센스
- 프로그래머스 월간 코드 챌린지
- 프로그래머스 코딩테스트 연습
- Spring Boot
- Firefox
- 브랜디
- terraform
- Today
- Total
목록디자인 패턴 (6)
프로그래밍 연습하기
싱글턴 패턴이란 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴입니다. 프로그램이 시작시에 생성되게 하지 않고 필요한 시기에 생성할 수도 있습니다. 싱글턴 패턴을 만들 때, private static으로 인스턴스를 저장합니다. 그리고 getInstance()를 구현하여 그 인스턴스가 있다면 그것을 반환하고, 없다면 새로 생성합니다. 이 과정이 멀티스레딩 상황에서 구현된다면, 자칫 인스턴스가 여러개 생성될 수 있습니다. getInstance()에 synchronize 키워드를 사용함으로써 이 문제를 해결할 수 있습니다. 하지만 속도 저하 등의 문제가 있습니다. 이런 문제에 대응하는 방법이 세 가지 있습니다. 그냥 Synchronize 키워드를 사용합니..
데코레이터 패턴은 객체에 동적으로 새로운 기능을 추가해줄 수 있게 합니다. 이 방법은 서브클래스를 생성하는 것 보다 유연합니다. 객체를 생성하면서 데코레이터로 감싸주면서 새로운 기능을 추가할 수 있습니다. 컴포넌트를 만들고 그것을 데코레이터를 만듭니다. 데코레이터가 컴포넌트를 상속하는 이유는 형식을 그대로 유지하기 위해서 입니다. 실제 컴포넌트와 데코레이터는 각각을 상속하여 작성하고, 컴포넌트를 데코레이터로 감싸면서 원하는 기능을 추가하게 됩니다. 단점은 클래스들이 많아지면서 쉽게 이해하기 힘들어질 수 있다는 점, 그리고 구성 요소의 특정 형식에 의존하는 경우에는 사용하기 힘듭니다. 코드가 복잡해지는 문제는 팩토리나 빌더 패턴을 통하여 개선할 수 있습니다. 참고 자료 - Head First Design ..
구매했던 책을 읽기 시작했습니다. 예전에 헤드 퍼스트 시리즈의 책은 내용을 풀어내는 스타일이 별로라고 생각했었는데, 읽다보니 괜찮은 스타일이라고 느꼈습니다. 서양 감성? 이라고 할까요.. 책의 전체적인 스타일은 뭔가 좀 저에겐 어색한 감성이기는 한데 내적으로는 무언가 계속 저에게 생각할 여지를 주는 것과 이야기식으로 내용을 풀어내는 것은 괜찮다고 느꼈습니다. 디자인 패턴도 열심히 보고 정리해봐야겠습니다.
옵저버 패턴은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고, 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의합니다. 옵저버들을 관리하는 Subject 인터페이스를 구현하는 클래스를 만들고, Observer 인터페이스를 구현하는 옵저버 클래스들이 있게 됩니다. Subject 인터페이스는 옵저버 등록, 삭제, 알림 메소드가 있고 Observer 인터페이스는 업데이트 메소드가 있습니다. Subject 인터페이스에서 알림 메소드 안에서 Observer 인터페이스의 업데이트 메소드를 사용해서 내용을 갱신할 수 있습니다. 옵저버 패턴은 자바에서 java.util.Observable 을 통해 사용할 수도 있습니다. 하지만 이는 클래스를 상속받아서 구현해야되기 때문에 재사용성에 제약..
스트래티지 패턴(전략 패턴)이란? 알고리즘군을 정의하고 각각을 캡슐화하여 교환하여 사용할 수 있도록 만듭니다. 행동을 인터페이스로 만들고, 사용할 클래스에서는 인터페이스를 선언해주고 구체적인 행동은 그 인터페이스를 구현한 클래스를 사용해주는 식으로 만듭니다. 전략 패턴을 보면서 스프링 프레임워크의 DI와 비슷하다고 느꼈는데, 자세한 내용은 좀 더 공부해보고 정리하려고 합니다. 참고 자료 - Head First Design Pattern
오늘은 Head First Design Pattern 책을 구매하였습니다. 헤드 퍼스트 시리즈 책 중 한 권을 예전에 도서관에서 잠깐 살펴봤었는데, 책이 내용을 풀어가는 스타일이 뭔가 눈에 안들어오고 마음에 들지 않아서 덮은 기억이 있었습니다. 그럼에도 디자인 패턴 책으로 많이 언급이 되어서, 이번에 한번 읽어보려고 합니다. 또 디자인 패턴 책으로 많이 언급되는 것이 GoF의 디자인 패턴 이라는 책인데, 평을 살펴보니 C++ 과 스몰톡을 사용하고 책이 조금 읽기 불편하다는 평을 봐서 헤드 퍼스트 책을 구매하게 되었습니다.