-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathproxy.py
More file actions
40 lines (27 loc) · 923 Bytes
/
proxy.py
File metadata and controls
40 lines (27 loc) · 923 Bytes
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
31
32
33
34
35
36
37
38
39
40
from abc import ABC, abstractmethod
class IOrder(ABC):
@abstractmethod
def order_request(self) -> None:
pass
class Warehouse(IOrder):
def __init__(self, stock:str) -> None:
self.stock = stock
def order_request(self) -> None:
print("Warehouse: Order Request ... Done")
class OrderfulfillmentProxy(IOrder):
def __init__(self, warehouses:Warehouse, amount:int) -> None:
self.warehouses = warehouses
self.amount = amount
def check_request(self) -> bool:
# Check stock availability
print("OrderfulfillmentProxy: Availabile ... Done")
return True
def check_access(self) -> bool:
print("OrderfulfillmentProxy: Access granted ... Done")
return True
def order_request(self) -> None:
if self.check_access() and self.check_request():
self.warehouses.order_request()
warehouse = Warehouse(100)
order_proxy = OrderfulfillmentProxy(warehouse, 50)
order_proxy.order_request()