반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- flutter
- 코딩
- dart
- 개발자도서
- 가상환경
- 프로그래밍
- 개발자
- 파이썬
- 위젯
- 유데미 러닝크루
- 유데미
- 플러터
- vscode
- command
- ai
- docker
- 디자인패턴
- 명령어
- python
- 도커
- manim
- 도서
- 개발
- 다트
- 한빛미디어
- linux
- 리눅스
- Code Generation
- 책
- 수학 애니메이션
Archives
- Today
- Total
승상의 코딩 블로그
디자인 패턴 - 퍼사드 패턴(Facade Pattern) with 파이썬(python) 본문
반응형
Facade 는 Oxford 사전에서 아래의 의미를 가집니다.
1. the face of a building
2. an outward appearance that is maintained to conceal a less pleasant or creditable reality.
- 먼가 좋지 않아보이는 것을 숨기기 위한 겉모습을 의미합니다
Facade 패턴이란 복잡한 서브 시스템을 간단하게 사용할 수 있는 인터페이스를 제공하는 패턴입니다.
아래는 물건을 주문하는 예시입니다.
class Inventory:
def checkStock(self, productId):
print(f"check stock for {productId}")
class Payment:
def approvePayment(self, amount):
print(f"approve payment for {amount}")
class Shipping:
def ship(self, destination):
print(f"shipping product to {destination}")
class OrderFacade:
def __init__(self):
self.inventory = Inventory()
self.payment = Payment()
slef.shipping = Shipping()
def placeOrder(self, productId, amount, destination):
self.inventroy.checkStock(productId)
self.payment.approvePayment(amount)
self.shipping.ship(destination)
orderFacade = OrderFacade()
orderFacade.placeOrder("candy", "100", "my home")
OrderFacade 는 사용자의 자율성을 줄이고 사용자가 진짜 필요로 하는 기능(orderPlace)만을 제공합니다.
Q. Inventory, Payment, Shipping 클래스를 직접적으로 제어해서 주문하는 것이 사용자가 원하는 것일까요?
A. 사용자는 그저 물품을 주문하고 싶습니다.
간단한 프로그램에서 10개에 대한 함수를 알았다면, 복잡해지면 100개, 1000개의 함수에 대해 알아야 할 수 있다.
사람의 머리는 사소한 모든 것을 기억하지 않는다.
프로젝트가 커질수록 정말 중요한 부분에 집중할 수 있도록, 관리 포인트를 줄이는 것이 중요하다.
* 추가. 퍼사드는 내부의 복잡한 것들을 숨긴다고 했다.
그렇다면 어떤 것들을 숨길 수 있을지 생각해보길 바란다.
예를 들어, 단순히 함수들간의 호출 순서를 숨길 수 있고, 객체의 초기화도 숨길 수도 있다. 또한 각 클래스들의 의존성도 숨길 수 있다.
반응형
'Python (파이썬)' 카테고리의 다른 글
[파이썬] QtDesigner 에서 창의 크기에 따라 위젯이 자동조절 되도록 하는 방법 (0) | 2025.01.23 |
---|---|
디자인 패턴 - 어댑터 패턴(Adapter Pattern) with 파이썬(python) (0) | 2023.07.14 |
디자인 패턴 - 빌더 패턴(Builder Pattern) with 파이썬(python) (0) | 2023.07.09 |
파이썬 - sqlite3 라이브러리 (0) | 2023.06.01 |
파이썬 - staticmethod (0) | 2023.05.29 |
Comments