

# 目标
本节使用一个书城的各方面业务需求来展示面向对象的常见设计模式 。


# 任务
背景假设为一个综合书城，提供线上线下购买，还经营一个书吧、一个报告厅。


# 说明
面向对象的模式是把编程过程中的一些思路固定化，并给一个名字方便理解 。
它是软件工程中一组经过验证的、可重复使用的代码写法 。
所以，模式不是语法，而是编程思路 。
这样做的好处是，统一大家的代码形式，提高代码可读性、可维护性、可扩展性 。
那为啥，面向过程没有这么做 ？
是因为这个思维提炼过程，充分利用了面向对象语言的特性：封装、继承、多态 。
面向过程语言，没有这些特性，所以，面向过程程序设计一般不谈设计模式 。

因为 Python 对象协议的机制，多态、接口概念发生了根本变化 。使得一些C++、Java 的模式没用了 。比如 “ 原型模式（Prototype）” ，可以使用copy.deepcopy()非常简便来创建 。另外，很多模式中继承关系也没必要了。但，下面很多示例中依旧保持了基类 。一是致敬经典，二是起到一个工程上更工整和代码注释的作用 。    


# 应用场景
面向对象设计模式在管理信息系统和图形用户界面系统应用比较广泛 。