github地址:https://github.com/cheesezh/python_design_patterns 题目背景 联合国在世界上就是中介者的角色,各国之间的关系复杂,类似不同的对象和对象之间的关系,这就要求对象之间需要知道其他所有对象,尽管将一个系统分割成许多对象通常可以增加其可复用性,但是对象间相互连接的激增优惠降低其可复用性.大量的连接使得一个对象不可能在没有其他对象的支持下工作,系统表现为一个不可分割的整体,所以,对系统的行为进行任何较大的改动就十分困难了. 这里可以应用"…
github地址:https://github.com/cheesezh/python_design_patterns 题目1 用程序模拟,顾客直接向烤串师傅提需求. class Barbecuer(): def bake_mutton(self): print("烤羊肉串") def bake_chicken_wing(self): print("烤鸡翅") def main(): boy = Barbecuer() boy.bake_mutton() boy.b…
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 题目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&…
github地址: https://github.com/cheesezh/python_design_patterns 题目 设计一个控制台程序, 模拟商场收银软件,根据客户购买商品的单价和数量,计算总价. 基础版本 price = float(input("输入商品单价:")) number = int(input("输入商品数量:")) total = (price * number) print("当前总价: %.2f" % total)…
github地址:https://github.com/cheesezh/python_design_patterns 题目 小时候数学老师的随堂测验,都是老师在黑板上写题目,学生在下边抄,然后再做题目.设计一个程序,模拟学生A和B抄题目做试卷的过程. 基础版本 class TestPaperA(): def test_question_1(self): print("题目1: !+1=?,a.2 b.3 c.4. d.1") print("我选:a") def t…
github地址:https://github.com/cheesezh/python_design_patterns 写在前面的话 """ 读书的时候上过<设计模式>这一门课,当时使用的教材是程杰老师的<大话设计模式>,使用的语言是C#,学过课程之后初期深感面向对象思想的伟大,但是很少应用到实际开发中.后来我接触了Python,现在工作中用到最多的也是Python,或许是因为Python的便利性,我写的很多脚本/程序都还是面向过程编程,缺少面向对象的…
github地址:https://github.com/cheesezh/python_design_patterns 单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例模式就能派上用场. 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息.如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很…
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 解释器模式 解释器模式,给定一个语言,定一个它的文法的一种表示,并定一个一个解释器,这个解释器使用该表示来解释语言中的橘子. 解释其模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的橘子.这样就可以构建一个解释器,该解释器通过解释这些橘子来解决该问题. 比如说,我们常常会在字符串中搜索匹配的字符或者判断一个字符串是否…