结构模式:数据——》业务逻辑——》呈现分离(严格关系)

原因:把结构层次分开,避免以后扩展业务逻辑的不必要的麻烦

# 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},
    }

    def __get__(self, obj, klas):
        print(f"\t<从数据存储中获取:>")
        return {'products': self.products}


class BusinessLogic(object):
    """
    数据管理功能
    """

    data = Data( )

    def product_list(self):
        return self.data['products'].keys( )

    def product_information(self, product):
        return self.data['products'].get(product, None)


# UI交互类
class Ui(object):

    def __init__(self):
        self.business_logic = BusinessLogic( )

    def get_product_list(self):
        print('<查看产品列表:>')
        for product in self.business_logic.product_list( ):
            print(f"\t{product}")

    def get_product_information(self, product):
        print(f"\n<获取“{product}”产品信息:>")
        product_info = self.business_logic.product_information(product)
        if product_info:
            print('\t\t<产品信息:>')
            name = product.title( )  # 将单词的首字母大写而已
            price = product_info.get('price', 0)  # 查看产品的价格
            quantity = product_info.get('quantity', 0)  # 查看产品的数量
            print("\t\t名称: {0}, 价格: {1:.2f}, 数量: {2:}".format(name, price, quantity))
        else:
            print('\t\t错误:该产品“ {0}”在记录中不存在'.format(product))


def 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('MiXinTu')


if __name__ == '__main__':
    main( )

输出:

<查看产品列表:>
	<从数据存储中获取:>
	milk
	eggs
	cheese

<获取“cheese”产品信息:>
	<从数据存储中获取:>
		<产品信息:>
		名称: Cheese, 价格: 2.00, 数量: 10

<获取“eggs”产品信息:>
	<从数据存储中获取:>
		<产品信息:>
		名称: Eggs, 价格: 0.20, 数量: 100

<获取“milk”产品信息:>
	<从数据存储中获取:>
		<产品信息:>
		名称: Milk, 价格: 1.50, 数量: 10

<获取“MiXinTu”产品信息:>
	<从数据存储中获取:>
		错误:该产品“ MiXinTu”在记录中不存在

你可能感兴趣的:(python模式)