본문으로 바로가기

KTKO 개발 블로그와 여행 일기

현재위치 :: HOME BLOG CATEGORY SEARCH ARCHIVE TAGS MEDIA LOCATION GUESTBOOK

네비게이션

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
관리자
  • 블로그 이미지
    ktko

    개발을 직업으로 삼고, 여행을 좋아하는 남자의 블로그

    링크추가
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃

디자인 패턴 - 싱글턴 패턴(Singleton Pattern)

싱글턴 패턴이란 인스턴스를 하나만 만들어 사용하기 위한 패턴이다. 커넥션 풀, 스레드 풀, 디바이스 설정 객체 등과 같은 경우 인스턴스를 여러 개 만들게 되면 불필요한 자원을 사용하게 되고, 또 프로그램이 예상치못한 결과를 낳을 수 있다. 싱글턴 패턴은 오직 인스턴스를 하나만 만들고 그것을 계속해서 재사용한다. 싱글턴 패턴을 적용할 경우 의미상 두 개의 객체가 존재할 수 없다. 이를 구현하려면 객체 생성을 위한 new에 제약을 걸어야 하고, 만들어진 단일 객체를 반환할 수 있는 메서드가 필요하다. 싱글턴 패턴의 중요 포인트 1. new를 실행할 수 없도록 생성자에 private 접근 제어자를 지정한다.2. 유일한 단일 객체를 반환할 수 있는 정적 메서드가 필요하다.3. 유일한 단일 객체를 참조할 정적 참..

자바 디자인 패턴 7년 전

[스프링/Spring] DI를 왜 사용해야 할까 ?

DI는 Dependency Injection의 약자로, 우리말로는 의존 주입이라고 주로 번역하는데 이 단어의 의미를 이해하려면 먼저 "의존"이 무엇인가에 대해서 이해가 필요하다. 의존은 UML을 공부하거나 디자인 패턴을 공부했다면 알고 있을 수 있으나 신입일 경우에는 모를수도 있다. 여담이지만 스프링을 공부하려면 디자인 패턴을 공부하는 것이 매우 좋을 듯하다. 왜나하면 스프링이 디자인 패턴을 토대로 만들어진 프레임워크이기 때문이다. DI도 어떻게 보면 디자인 패턴에서 나온 하나의 결과물이라고 할 수 있다. 다시 돌아와서 의존이란 무엇일까 ? 의존은 한 클래스가 다른 클래스의 메서드를 실행할 때 이를 "의존" 한다고 한다. 의존의 예를 들자면 아래와 같다. 아래 자동차는 본체와, 엔진, 타이어 객체가 있어..

Spring 스프링 7년 전

디자인 패턴 - 데코레이터 패턴(Decorator Pattern)

데코레이터는 도장/도배업자를 의미한다. 여기서는 장식자라는 뜻을 가지고 논리를 풀어보자면, 데코레이터 패턴이 원본에 장식을 더하는 패턴이라는 것이 이름에 드러난다. 데코레이터 패턴은 프록시 패턴과 구현 방법이 같다. 차이점은 프록시 패턴은 클라이언트가최종적으로 돌려 받는 반환값을 조작하지 않고 그대로 전달하는 반면, 데코레이터 패턴은 클라이언트가 받는 반환값에 장식을 덧입힌다. 데코레이터 패턴의 중요 포인트 1. 장식자는 실제 서비스와 같은 이름의 메서드를 구현한다. 이때 인터페이스를 사용한다.2. 장식자는 실제 서비스에 대한 참조 변수를 갖는다.3. 장식자는 실제 서비스의 같은 이름을 가진 메서드를 호출하고, 그 반환값에 장식을 더해 클라이언트에게 돌려준다.4. 장식자는 실제 서비스의 메서드 호출 전후..

자바 디자인 패턴 7년 전

디자인 패턴 - 프록시 패턴(Proxy Pattern)

프록시는 대리자, 대변인이라는 뜻을 가진다. 프록시는 다른 누군가를 대신해 그 역할을 수행하는 존재를 말한다. 뉴스에서도 청와대 대변인, 백악관 대변인 등등 다양한 대변인이 등장하는 것처럼 디자인 패턴에서도 대리자/대변인이 등장한다. 프록시 패턴의 중요 포인트 1. 대리자는 실제 서비스와 같은 이름의 메서드를 구현한다. 이때 인터페이스를 사용한다.2. 대리자는 실제 서비스에 대한 참조 변수를 갖는다(함성).3. 대리자는 실제 서비스의 같은 이름을 가진 메서드를 호출하고 그 값을 클라이언트에게 돌려준다.4. 대리자는 실제 서비스의 메서드 호출 전후에 별도의 로직을 수행할 수도 있다. 프록시 패턴을 사용하지 않은 일반적인 코드 12345678910111213class Service { public Strin..

자바 디자인 패턴 7년 전

디자인 패턴 - 어댑터 패턴(Adapter Pattern)

어댑터 패턴을 번역하면 변환기라고 할 수 있다. 변환기의 역할은 서로 다른 두 인터페이스 사이에 통신이 가능하게 하는 것이다. 어댑터 패턴을 예로 들자면 자바에서 데이터베이스를 접속할 때 사용하는 JDBC를 예를 들 수 있다. JDBC를 통해 다양한 데이터베이스를 접근할 수 있다. 어댑터 패턴은 SOLID의 개방 폐쇄 원칙(OCP)를 활용한 설계 패턴이라고 할 수 있다. 어댑터 패턴(Adapter pattern)은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다. 어댑터 패턴을 이해하기 쉬운 예제전기 소켓과 볼트를 예로 들자면 한국은 220V를 사용하지만 해외에서는 110V를 사용하는 곳이..

자바 디자인 패턴 7년 전

자바 객체 지향의 원리 SOLID - DIP : 의존 역전 원칙

DIP : 의존 역전 원칙 "고차원 모듈은 저차원 모듈에 의존하면 안된다. 이 두 모듈 모두 다른 추상화된 것에 의존해야 한다.""추상화된 것은 구체적인 것에 의존하면 안된다. 구체적인 것이 추상화된 것에 의존해야 한다.""자주 변경되는 구체(Concrete) 클래스에 의존하지 마라" "자신보다 변하기 쉬운 것에 의존하지 마라"- 로버트 C 마틴 자동차와 스노우타이어 사이에는 의존 관계가 있다. 자동차가 스노우 타이어에 의존한다. 자동차는 한 번 사면 몇 년은 타야 하는데 스노우 타이어는 일반 타이어로 교체해야 한다. 스노우 타이어를 일반 타이어로 교체할 때 자동차는 그 영향에 노출돼 있음을 알 수 있다. 자동차가 구체적인 타이어들(스노우, 일반, 광폭)이 아닌 추상화된 타이어 인터페이스에만 의존하게 함..

자바 디자인 패턴 7년 전

자바 객체 지향의 원리 SOLID - ISP : 인터페이스 분리 원칙

ISP : 인터페이스 분리 원칙 "클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안된다. - 로버트 C 마틴" 단일 책임 원칙(SRP) 여기에서 봤던 내용을 보면 남자 클래스를 다수의 클래스로 토막내어 사용하였다. 너무 잔인하다는 생각이 든다면 선택할 수 있는 방법이 ISP 즉 인터페이스 분할 원칙이다. 남자클래스를 SPR처럼 토막내어 사용하는 것이 아니라 인터페이스로 제한하여 사용하는 것이 인터페이스 분할 원칙의 핵심이다. 결론적으로 단일 책임 원칙(SRP)과 인터페이스 분할 원칙(ISP)은 같은 문제에 대한 두 가지 해결책이라고 볼 수 있다. 설계자와 요구사항에 따라 선택해서 설계할 수 있다. 하지만 특별한 경우가 아니라면 단일 책임 원칙을 적용하는 것이 더 좋은 해결책이라고 할 수 ..

자바 디자인 패턴 7년 전
  • 이전
  • 1
  • ···
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • ···
  • 44
  • 다음

사이드바

NOTICE

  • 전체 보기
MORE+

CATEGORY

  • 분류 전체보기 (308)
    • 일기 (0)
    • 코드 예제 모음 (1)
      • [JAVA] 웹 크롤링 하기 (1)
    • HTML (1)
    • Java 개발 이야기 (33)
    • Spring 스프링 (16)
    • 자바 디자인 패턴 (13)
    • Effective Java (24)
      • 1장 객체의 생성과 삭제 (7)
      • 3장 클래스와 인터페이스 (3)
      • 7장 메서드 (6)
      • 8장 일반적인 프로그래밍 원칙들 (8)
    • Kotlin 코틀린 (10)
    • JavaScript (24)
    • vue.js (0)
    • node.js (2)
    • jQuery (10)
    • Ajax&JSON (7)
    • Android (12)
    • 알고리즘 및 자료구조 (94)
      • 자바로 만드는 자료구조 (4)
      • 정렬 (3)
      • 탐색 (3)
      • 이론 (2)
      • 문제 (82)
    • 보안 (3)
    • IT인터뷰면접질문 (6)
    • 정규표현식 (2)
    • Unix (2)
    • IT이것저것 (20)
    • 맛집 (4)
    • 여행 (10)
      • 호주 (4)
      • 일본 (6)
    • 블로그 TIPS (6)
    • 영어 공부 (8)
      • 영어 문법 (8)
      • 영어 단어 (0)

RECENTLY

  • 최근 글
  • 최근 댓글

최근 글

최근댓글

Trackback

TAG

  • 코틀린
  • 알고리즘
  • 자바스크립트
  • 객체지향 solid
  • GoF
  • Effective Java
  • 백준알고리즘
  • 알고리즘 문제
  • 자바
  • jquery
  • 자바 SOLID
  • 이펙티브 자바
  • 백준
  • 디자인 패턴
  • 백준 알고리즘
MORE+

ARCHIVE

CALENDAR

«   2025/06   »
일 월 화 수 목 금 토
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

LINK

VISITOR

오늘
어제
전체
  • 홈으로
  • 방명록
  • 로그인
  • 로그아웃
  • 맨위로
SKIN BY COPYCATZ COPYRIGHT KTKO 개발 블로그와 여행 일기, ALL RIGHT RESERVED.
KTKO 개발 블로그와 여행 일기
블로그 이미지 ktko 님의 블로그
MENU
  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
CATEGORY
  • 분류 전체보기 (308)
    • 일기 (0)
    • 코드 예제 모음 (1)
      • [JAVA] 웹 크롤링 하기 (1)
    • HTML (1)
    • Java 개발 이야기 (33)
    • Spring 스프링 (16)
    • 자바 디자인 패턴 (13)
    • Effective Java (24)
      • 1장 객체의 생성과 삭제 (7)
      • 3장 클래스와 인터페이스 (3)
      • 7장 메서드 (6)
      • 8장 일반적인 프로그래밍 원칙들 (8)
    • Kotlin 코틀린 (10)
    • JavaScript (24)
    • vue.js (0)
    • node.js (2)
    • jQuery (10)
    • Ajax&JSON (7)
    • Android (12)
    • 알고리즘 및 자료구조 (94)
      • 자바로 만드는 자료구조 (4)
      • 정렬 (3)
      • 탐색 (3)
      • 이론 (2)
      • 문제 (82)
    • 보안 (3)
    • IT인터뷰면접질문 (6)
    • 정규표현식 (2)
    • Unix (2)
    • IT이것저것 (20)
    • 맛집 (4)
    • 여행 (10)
      • 호주 (4)
      • 일본 (6)
    • 블로그 TIPS (6)
    • 영어 공부 (8)
      • 영어 문법 (8)
      • 영어 단어 (0)
VISITOR 오늘 / 전체
  • 글쓰기
  • 환경설정
  • 로그인
  • 로그아웃
  • 취소

검색

  • 코틀린
  • 알고리즘
  • 자바스크립트
  • 객체지향 solid
  • GoF
  • Effective Java
  • 백준알고리즘
  • 알고리즘 문제

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.