浏览代码

Merge branch 'master' of https://github.com/harenson/python-patterns into harenson-master

Sakis Kasampalis 12 年之前
父节点
当前提交
02a45af542
共有 2 个文件被更改,包括 110 次插入0 次删除
  1. 54 0
      3-tier.py
  2. 56 0
      mvc.py

+ 54 - 0
3-tier.py

@@ -0,0 +1,54 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+class Data(object):
+
+    products = {
+            'milk': { 'price': 1.50, 'quantity': 10 },
+            'eggs': { 'price': 0.20, 'quantity': 100 },
+            'cheese': { 'price': 2.00, 'quantity': 10 }
+    }
+
+
+class BusinessLogic(object):
+
+    def __init__(self):
+        self.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(object):
+
+    def __init__(self):
+        self.business_logic = BusinessLogic()
+
+    def get_product_list(self):
+        print('PRODUCT LIST:')
+        for product in self.business_logic.product_list():
+            print(product)
+        print('')
+
+    def get_product_information(self, product):
+        product_info = self.business_logic.product_information(product)
+        if product_info is not None:
+            print('PRODUCT INFORMATION:')
+            print('Name: %s, Price: %.2f, Quantity: %d\n' % \
+                  (product.title(), product_info.get('price', 0), \
+                   product_info.get('quantity', 0)))
+        else:
+            print('That product "%s" does not exist in the records' % product)
+
+
+if __name__ == '__main__':
+
+    ui = Ui()
+    ui.get_product_list()
+    ui.get_product_information('cheese')
+    ui.get_product_information('eggs')
+    ui.get_product_information('milk')
+    ui.get_product_information('arepas')

+ 56 - 0
mvc.py

@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+ 
+class Model(object):
+ 
+    products = {
+            'milk': { 'price': 1.50, 'quantity': 10 },
+            'eggs': { 'price': 0.20, 'quantity': 100 },
+            'cheese': { 'price': 2.00, 'quantity': 10 }
+    }
+
+
+class View(object):
+ 
+    def product_list(self, product_list):
+        print('PRODUCT LIST:')
+        for product in product_list:
+            print(product)
+        print('')
+ 
+    def product_information(self, product, product_info):
+        print('PRODUCT INFORMATION:')
+        print('Name: %s, Price: %.2f, Quantity: %d\n' % \
+              (product.title(), product_info.get('price', 0), \
+               product_info.get('quantity', 0)))
+
+    def product_not_found(self, product):
+        print('That product "%s" does not exist in the records' % product)
+
+
+class Controller(object):
+ 
+    def __init__(self):
+        self.model = Model()
+        self.view = View()
+ 
+    def get_product_list(self):
+        product_list = self.model.products.keys()
+        self.view.product_list(product_list)
+ 
+    def get_product_information(self, product):
+        product_info = self.model.products.get(product, None)
+        if product_info is not None:
+            self.view.product_information(product, product_info)
+        else:
+            self.view.product_not_found(product)
+ 
+ 
+if __name__ == '__main__':
+ 
+    controller = Controller()
+    controller.get_product_list()
+    controller.get_product_information('cheese')
+    controller.get_product_information('eggs')
+    controller.get_product_information('milk')
+    controller.get_product_information('arepas')