github地址:https://github.com/cheesezh/python_design_patterns 题目 设计一个控制台程序,可以给人搭配嘻哈风格(T恤,垮裤,运动鞋)或白领风格(西装,领带,皮鞋)的衣服并展示,类似QQ秀那样的. 基础版本 class Person(): def __init__(self, name): self.name = name def wear_T_shirts(self): print("T恤") def wear_big_trous…
github地址:https://github.com/cheesezh/python_design_patterns 单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例模式就能派上用场. 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息.如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很…
github地址:https://github.com/cheesezh/python_design_patterns 紧耦合程序演化 题目1 编程模拟以下情景,有一个N品牌手机,在上边玩一个小游戏. class HandsetNGame(): def run(self): print("运行N品牌手机游戏") def main(): game = HandsetNGame() game.run() main() 运行N品牌手机游戏 题目2 现在又有一个M品牌的手机,也有小游戏,客户端…
github地址:https://github.com/cheesezh/python_design_patterns 写在前面的话 """ 读书的时候上过<设计模式>这一门课,当时使用的教材是程杰老师的<大话设计模式>,使用的语言是C#,学过课程之后初期深感面向对象思想的伟大,但是很少应用到实际开发中.后来我接触了Python,现在工作中用到最多的也是Python,或许是因为Python的便利性,我写的很多脚本/程序都还是面向过程编程,缺少面向对象的…
github地址:https://github.com/cheesezh/python_design_patterns 题目 用程序模拟以下不同情况: 男人成功时,背后多半有一个伟大的女人: 女人成功时,背后多半有一个失败的男人: 男人失败时,闷头喝酒,谁也不用劝: 女人失败时,眼泪汪汪,谁也劝不了: 男人恋爱时,凡事不懂也要装逼: 女人恋爱时,遇事懂也装作不懂: 基础版本 from abc import ABCMeta,abstractmethod class Person(): __meta…
github地址:https://github.com/cheesezh/python_design_patterns 背景 有6个客户想做产品展示网站,其中3个想做成天猫商城那样的"电商风格"展示页面,其中3个想做成博客园那样的"博客风格"展示博客.应该如何实现? class WebSite(): def __init__(self, name): self.name = name def use(self): print("网站风格:", s…
github地址:https://github.com/cheesezh/python_design_patterns 题目背景 联合国在世界上就是中介者的角色,各国之间的关系复杂,类似不同的对象和对象之间的关系,这就要求对象之间需要知道其他所有对象,尽管将一个系统分割成许多对象通常可以增加其可复用性,但是对象间相互连接的激增优惠降低其可复用性.大量的连接使得一个对象不可能在没有其他对象的支持下工作,系统表现为一个不可分割的整体,所以,对系统的行为进行任何较大的改动就十分困难了. 这里可以应用"…
github地址:https://github.com/cheesezh/python_design_patterns 题目 用代码模拟以下场景,一个游戏角色有生命力,攻击力,防御力等数据,在打Boss前后的数据值会发生变化,如果玩家挑战Boss失败,我们允许玩家可以将游戏数据恢复到与Boss决斗之前的状态. 基础版本 class GameRole(): def __init__(self): self.vitality = 0 self.attack = 0 self.defense = 0…
github地址:https://github.com/cheesezh/python_design_patterns 适配器模式 适配器模式,将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作[DP]. 当系统的数据和行为都正确,但是接口不符时,我们应该考虑使用适配器模式,目的就是使控制范围之外的一个原有对象与某个接口匹配.适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况. class Targe…
github地址:https://github.com/cheesezh/python_design_patterns 题目 用程序模拟以下情景,在一个办公室里,当老板进门的时候,前台秘书就偷偷通知办公室里的同事:"老板来了",办公室里的同事就会停止观看股票,继续工作. 基础版本 class Secretary(): """ 通知者 """ def __init__(self): self.observers = [] sel…