일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코틀린
- 옵저버 패턴
- Abstract Factory
- 함수형프로그래밍
- Kotlin
- 추상 팩토리
- Design Pattern
- 디자인패턴 #
- a
- factory method
- Singleton
- designPattern
- Observer Pattern
- builderPattern
- F
- ㅋㅁ
- 프로토타입 패턴
- 팩토리 메소드
- Functional Programming
- 디자인패턴
- 추상팩토리패턴
- ㅓ
- 싱글톤
- El
- r
- 빌터패턴
- PrototypePattern
- Today
- Total
목록디자인패턴 (18)
오늘도 더 나은 코드를 작성하였습니까?
SimpleFactory는 하나의 디자인 패턴이라 보기 힘들지만 자주 사용되고 중요하다. 객체를 만들어 반환하는 함수를 (생성자 대신) 제공하여 초기화 과정을 외부에서 보지 못하게 숨기고 반환 타입을 제어하는 방법. 객체를 사용하는 측에서 팩토리를 이용해서 필요한 원재료 및 생성하려는 객체를 주문하면 그것을 팩토리가 생성해서 제공하여 클라이언트 는 구체적인 객체 생성 로직을 알 필요가 없기 때문에 의존성을 낮아진다. fun main() { val iceCream: IceCream = IceCreamFactory.creator(CHOCOLATE) println(iceCream) } abstract class IceCream() class ChocoLateIceCream() : IceCream(){ over..
객체 지향 프로그래밍에서 의존관계 역전 원칙은 소프트웨어 모듈들을 분리하는 특정 형식을 지칭한다. 이 원칙을 따르면, 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다. 첫째, 상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다. 둘째, 추상화는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다. 이 원칙은 '상위와 하위 객체 모두가 동일한 추상화에 의존해야 한다'는 객체 지향적 설계의 대원칙을 제공한다. 예를 들어 동물원인 상위 모듈과 그 하위 모듈로 사자와 곰이 있다고 하자. class Zoo( val lions: List, val ..
인터페이스 분리 원칙은 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙이다. 인터페이스 분리 원칙은 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다. 이와 같은 작은 단위들을 역할 인터페이스라고도 부른다. 인터페이스 분리 원칙을 통해 시스템의 내부 의존성을 약화시켜 리팩토링, 수정, 재배포를 쉽게 할 수 있다. 예를 들어 탱크의 기능을 가진 인터페이스를 정의 하고 이를 구현하려고 한다. 아래의 6개의 기능을 정의 하였다. interface Tank{ fun forward() fun backward() fun turnLeft() fun turnRight() fun aiming() fun shoot() } 하지..
치환성은 객체 지향 프로그래밍의 원칙이다. 컴퓨터 프로그램에서 자료형 S가 자료형T의 하위타입이라면 수정을 거치지 않고, 자료형T의 객체를 자료형S의 객체로 교체하여도 기존의 나머지 부분들과 충돌없고, 오류 없이 실행되어야 한다. import java.util.* fun main() { val sCard = SCard("13579") val spCard = SCardPlus("246810") val shop = Shop() shop.addBeverage() shop.addSnack() println(shop.order(sCard)) println(shop.order(spCard)) } abstract class Card(val number: String){ abstract fun payment(compa..