You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 目标
|
|
|
|
|
本节使用一个书城的各种业务环节来展示面向对象的各种设计模式 。
|
|
|
|
|
|
|
|
|
|
# 任务
|
|
|
|
|
背景假设为一个综合书城,提供线上线下购买,还经营一个书吧、一个报告厅
|
|
|
|
|
|
|
|
|
|
# 说明
|
|
|
|
|
因为 Python 对象协议的机制,多态、接口概念发生了根本变化。
|
|
|
|
|
很多模式中,类的继承关系没必要了。下面示例中很多依旧保持了基类
|
|
|
|
|
一是致敬经典,二是起到一个工程上更工整强注释的作用
|
|
|
|
|
|
|
|
|
|
另外,Python的动态语言的特性 。使得一些C++、Java 的模式没用了。
|
|
|
|
|
比如 “ 原型模式(Prototype)” ,可以使用copy.deepcopy()非常简便来创建。
|
|
|
|
|
|
|
|
|
|
面向对象设计模式是软件工程中一组经过验证的、可重复使用的解决方案,
|
|
|
|
|
用于解决在设计和实现面向对象系统时经常遇到的设计问题。
|
|
|
|
|
面向对象的模式把编程过程中的一些思路套路固定化,并给一个名字方便理解 。
|
|
|
|
|
所以,模式不是语法,而是编程思路。
|
|
|
|
|
那为啥,面向过程没有这么做?
|
|
|
|
|
是因为这个思维提炼过程,充分利用了面向对象语言的特性:封装、继承、多态。
|