일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 후니의쉽게쓴시스코네트워킹
- leetcode
- IT기초
- 모여봐요동물의숲
- 회사폐업
- 캡쳐링
- 정보
- 동적계획법
- 네트워크
- 정보처리기사개정
- 취업사실신고
- 알고리즘
- 실업인정인터넷신청
- 순열
- 튜터링
- 실업급여
- 사회초년생
- 코딩테스트
- HeadFirstDesignPatterns
- 생애첫계약
- 막대기자르기
- 청년내일채움공제
- 후니의쉽게쓴시스코라우팅
- array
- 프로그래머스
- C++
- 부분합알고리즘
- 전화영어
- 자취준비
- 자료구조
- Today
- Total
목록HeadFirstDesignPatterns (13)
따봉도치야 고마워
싱글턴 패턴 싱글턴 패턴은 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴 싱글턴은 제한된 용도로 특수한 상황에서 사용해야함. 남용 x 전역변수 사용 시 단점 전역변수에 객체를 대입하면 어플리케이션 시작 시 객체가 생성됨(플랫폼마다 다르지만) 만약 그 객체가 자원을 많이 차지하는데 아무도 쓰지 않는다면 아무데도 쓸데없는 객체가 되어버림. 고전적인 싱글턴 패턴 구현법 생성자를 private 으로 선언하고, 클래스의 인스턴스를 생성해 리턴해주는 정적 메소드를 만듦 public class Singleton{ private static Singleton uniqueInstance; private Singleton() {} //생성자를 private으로 선언..

팩토리 패턴 팩토리 메소드 패턴에서는 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 클래스의 인스턴스를 만들지는 서브클래스에서 결정하게 함. 클래스의 인스턴스를 만드는 일을 서브 클래스에 맡김 모든 팩토리 패턴에서는 객체 생성을 캡슐화한다. 팩토리 메소드 패턴에서는 서브클래스에서 어떤 클래스를 만들지 결정하게 함으로 객체 생성을 캡슐화한다. Creator 클래스 : 생산자 클래스, 팩토리 메소드를 정의/구현한다. ex) PizzaStore(추상), NYPizzaStore(구상) Product 클래스 : 팩토리 메소드에서 생산하는 제품 추상 팩토리 패턴에서는 인터페이스를 이용해 서로 연관/의존하는 객체를 구상 클래스를 지정하지 않고도 생성할 수 있음 클라이언트에서 추상 인터페이스를 통해 일련의 제품을..
데코레이터 패턴 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해 기능을 유연하게 확장하는 방법을 제공한다. 데코레이터의 수퍼클래스 == 자신이 장식하고 있는 객체의 수퍼클래스 -> 원래 객체가 들어갈 자리에 데코레이터 객체를 넣어도 상관 없음 한 객체를 여러개의 데코레이터로 감쌀 수 있음 데코레이터는 자신이 장식하는 객체에게 어떤 행동을 위임하는 것 외에 원하는 추가 작업을 수행 가능 객체는 언제든 감쌀 수 있기 때문에 실행중에 마음대로 적용 가능 장단점? 장점 : 하나의 객체에 추가해야될 기능들이 다양하고 일정하지 않을 때 효율적 단점 : 데코레이터 클래스가 너무 많아져 코드가 복잡해질 수도 스타버즈 예제 - 상속을 사용하면 서브 클래스가 매우 많아지거나, 일부 서..
옵저버 패턴(Observer Pattern) 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고, 자동으로 내용이 갱신되는 방식 일대다 의존성을 정의 Subject와 Observer 인터페이스를 각각 구현 - WeatherData(Subject), Displays(Observer) Subject엔 옵저버 등록, 삭제, 알림 메소드 필요 옵저버는 update() 메소드 구현. - update(온,습,압) + 옵저버한테 연락이 가는 순서에 의존해서 코딩하면 안 됨. 자바 내장 옵저버 패턴 - 푸시 방식뿐만 아니라 풀 방식으로 갱신 가능 - Subject가 아니라 Observable 클래스 상속받아 사용 - WeatherData(extends Observable) - 옵저버 객체에선 위 ..
디자인 패턴 소개 모든 패턴은 '시스템의 일부를 다른 부분과 독립적으로 변화시킬 수 있는' 방법을 제공하기 위한 것 디자인 원칙 애플리케이션에서 달라지는 부분을 찾고, 달라지지 않는 부분으로부터 분리한다. 구현이 아닌 인터페이스에 맞춰 프로그래밍한다. //여기서 인터페이스는 중의적 의미로 '상위 형식'을 의미함 상속보다는 구성을 활용한다. 스트래티지 패턴(Strategy Pattern) : SimUDuck 예제 - fly(), quack() 메소드를 슈퍼 클래스에 정의 시 : 해당 기능이 없어야 하는 서브 클래스는 매번 재정의 해줘야 함 - flyable, quackable 인터페이스를 서브 클래스에서 구현하도록 하면 : 코드 중복 발생 *패턴 적용 - 슈퍼 클래스에선 FlyBehavior, QuackB..