三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(User interface)、业务逻辑层(Business Logic)、数据访问层(Database)。区分层次的目的即为了“高内聚低耦合”的思想。
#!/usr/bin/env python
class Data():
"""
数据存储类
"""
products = {
'milk': {'price': 1.50, 'quantity': 10},
'eggs': {'price': 0.20, 'quantity': 100},
'cheese': {'price': 2.00, 'quantity': 10}
}
def __get__(self, obj, cls):
print("(Fetching From Data Store)")
return {"products": self.products}
class BusinessLogic():
"""
业务逻辑存储数据层实例
"""
data = Data()
def product_list(self):
return self.data['products'].keys()
def product_information(self, product):
return self.data['products'].get(product, None)
class Ui():
"""
UI 交互类
"""
def __init__(self):
self.business_logic = BusinessLogic()
def get_product_list(self):
print("Product List:")
for product in self.business_logic.product_list():
yield product
print('')
def get_production_information(self, product):
product_info = self.business_logic.product_information(product)
if product_info:
print("Product Information:")
print("Name: {0}, Price: {1:.2f}, Quantity: {2}".format(
product.title(), product_info.get('price', 0),
product_info.get('quantity', 0)
))
else:
print("That product [{0}] does not exist in records.".format(product))
def main():
ui = Ui()
ui.get_product_list()
ui.get_production_information('cheese')
ui.get_production_information('eggs')
ui.get_production_information('milk')
ui.get_production_information('arepas')
if __name__ == "__main__":
main()
(Fetching From Data Store)
Product Information:
Name: Cheese, Price: 2.00, Quantity: 10
(Fetching From Data Store)
Product Information:
Name: Eggs, Price: 0.20, Quantity: 100
(Fetching From Data Store)
Product Information:
Name: Milk, Price: 1.50, Quantity: 10
(Fetching From Data Store)
That product [arepas] does not exist in records.
优点
缺点