# 目标 本节使用一个书城的各种业务环节来展示面向对象的各种设计模式 。 # 任务 背景假设为一个综合书城,提供线上线下购买,还经营一个书吧、一个报告厅。 # 说明 面向对象的模式把编程过程中的一些思路固定化,并给一个名字方便理解 。 它是软件工程中一组经过验证的、可重复使用的代码写法 。 所以,模式不是语法,而是编程思路 。 这样做的好处是,统一大家的代码形式,提高代码可读性、可维护性、可扩展性 。 那为啥,面向过程没有这么做 ? 是因为这个思维提炼过程,充分利用了面向对象语言的特性:封装、继承、多态 。 面向过程语言,没有这些特性,所以,面向过程语言没有面向对象模式 。 因为 Python 对象协议的机制,多态、接口概念发生了根本变化 。 很多模式中,类的继承关系没必要了。下面示例中很多依旧保持了基类 。 一是致敬经典,二是起到一个工程上更工整和强注释的作用 。 另外,Python的动态语言的特性 。使得一些C++、Java 的模式没用了 。 比如 “ 原型模式(Prototype)” ,可以使用copy.deepcopy()非常简便来创建 。 # 应用场景 面向对象设计模式在管理信息系统和图形用户界面系统应用比较广泛 。