[Python设计模式] 第12章 基金理财更省事——外观模式

it2022-05-19  74

github地址:https://github.com/cheesezh/python_design_patterns

题目1

用程序模拟股民直接炒股的代码,比如股民投资了股票1,股票2,股票3,国债1,房地产1.

class Stock1(): def sell(self): print("卖出股票1") def buy(self): print("买入股票1") class Stock2(): def sell(self): print("卖出股票2") def buy(self): print("买入股票2") class Stock3(): def sell(self): print("卖出股票3") def buy(self): print("买入股票3") class NationalDebt1(): def sell(self): print("卖出国债1") def buy(self): print("买入国债1") class Realty1(): def sell(self): print("卖出房地产1") def buy(self): print("买入房地产1") def user_action(): """ 模拟股民的操作,股民需要了解各个理财产品的走势,进而买入卖出 """ gu1 = Stock1() gu2 = Stock2() gu3 = Stock3() nd1 = NationalDebt1() rt1 = Realty1() gu1.buy() gu2.buy() gu3.buy() nd1.buy() rt1.buy() gu1.sell() gu2.sell() gu3.sell() nd1.sell() rt1.sell() user_action() 买入股票1 买入股票2 买入股票3 买入国债1 买入房地产1 卖出股票1 卖出股票2 卖出股票3 卖出国债1 卖出房地产1

题目2

用程序模拟股民通过基金理财的代码,股民只需要购买&卖出基金即可,不需要对具体的股票等有了解.

class Fund(): def __init__(self): self.gu1 = Stock1() self.gu2 = Stock2() self.gu3 = Stock3() self.nd1 = NationalDebt1() self.rt1 = Realty1() def sell(self): self.gu1.sell() self.gu2.sell() self.gu3.sell() self.nd1.sell() self.rt1.sell() def buy(self): self.gu1.buy() self.gu2.buy() self.gu3.buy() self.nd1.buy() self.rt1.buy() def user_action(): """ 模拟股民的操作,股民只需要买进卖出基金即可 """ fund = Fund() fund.buy() fund.sell() user_action() 买入股票1 买入股票2 买入股票3 买入国债1 买入房地产1 卖出股票1 卖出股票2 卖出股票3 卖出国债1 卖出房地产1

外观模式

外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用[DP]。

多个子系统类

class SubSystemOne(): def method_one(self): print("子系统方法1") class SubSystemTwo(): def method_two(self): print("子系统方法2") class SubSystemThree(): def method_three(self): print("子系统方法3")

外观类

class Facade(): def __init__(self): self.one = SubSystemOne() self.two = SubSystemTwo() self.three = SubSystemThree() def method_a(self): self.one.method_one() self.two.method_two() def method_b(self): self.two.method_two() self.three.method_three() def main(): facade = Facade() facade.method_a() facade.method_b() main() 子系统方法1 子系统方法2 子系统方法2 子系统方法3

点评

外观模式完美的体现了依赖倒转原则和迪米特法则的思想,是非常常用的模式之一。

那么什么时候使用外观模式最好?

在设计阶段,应该有意识的将不同的两个层分离,比如经典的三层架构,需要考虑在数据访问层和业务逻辑层,业务逻辑层和表示层的层与层之间简历外观模式,这样可以为复杂的子系统提供一个简单的接口,使得耦合度降低;在开发阶段,子系统往往因为不断重构演化而变得越来越复杂,大多数的模式使用时也都会产生很多很小的类,这本是好事,但是也给外部调用它们的用户程序带来了使用上的困难,增加外观Facade可以提供一个简单的接口,减少它们之间的依赖;在维护阶段,可能一个大型的系统已经非常难以维护和扩展,但是因为它包含了重要功能,新的开发需求必须依赖它,此时也可以使用外观模式。可以为新系统开发一个Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统和Facade对象交互。

转载于:https://www.cnblogs.com/CheeseZH/p/9431338.html


最新回复(0)