github地址:https://github.com/cheesezh/python_design_patterns 单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例模式就能派上用场. 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息.如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很…
github地址:https://github.com/cheesezh/python_design_patterns 写在前面的话 """ 读书的时候上过<设计模式>这一门课,当时使用的教材是程杰老师的<大话设计模式>,使用的语言是C#,学过课程之后初期深感面向对象思想的伟大,但是很少应用到实际开发中.后来我接触了Python,现在工作中用到最多的也是Python,或许是因为Python的便利性,我写的很多脚本/程序都还是面向过程编程,缺少面向对象的…
1. 定义 一个类只有一个实例,提供访问该实例的全局方法 2.应用场景 (1)多线程之间共享对象资源 (2)整个程序空间中的全局变量,共享资源 (3)大规模程序的节省创建对象的时间 3.代码实现(使用饿汉式) #!/usr/bin/env python # _*_ coding: UTF-8 _*_ from threading import Thread class Person(object): __instance = None def __init__(self): pass '''第一…
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 紧耦合程序演化 题目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 题目 用代码模拟一天的工作状态,上午状态好,中午想睡觉,下午渐恢复,加班苦煎熬. 基础版本--函数版 hour = 0 work_finished = False def write_program(): if hour < 12: print("当前时间: {} 点, 上午工作,精神百倍".format(hour)) elif hour < 13: pr…
github地址:https://github.com/cheesezh/python_design_patterns 题目 设计一个简历类,必须有姓名,可以设置性别和年龄,即个人信息,可以设置曾就职公司和工作时间,即工作经历. 基础版本 class Resume(): def __init__(self, name): self.name = name # python默认成员变量公开 self.__sex = None # python默认成员变量公开,加__表示私有 self.__age…
github地址:https://github.com/cheesezh/python_design_patterns 题目1 Boy追求Girl,给Girl送鲜花,送巧克力,送洋娃娃. class Boy(): def __init__(self, girl): self.girl = girl def give_dolls(self): print("{}, 送你洋娃娃".format(self.girl.name)) def give_flowers(self): print(&…
github地址:https://github.com/cheesezh/python_design_patterns 题目 用程序模拟以下不同情况: 男人成功时,背后多半有一个伟大的女人: 女人成功时,背后多半有一个失败的男人: 男人失败时,闷头喝酒,谁也不用劝: 女人失败时,眼泪汪汪,谁也劝不了: 男人恋爱时,凡事不懂也要装逼: 女人恋爱时,遇事懂也装作不懂: 基础版本 from abc import ABCMeta,abstractmethod class Person(): __meta…
github地址:https://github.com/cheesezh/python_design_patterns 解释器模式 解释器模式,给定一个语言,定一个它的文法的一种表示,并定一个一个解释器,这个解释器使用该表示来解释语言中的橘子. 解释其模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的橘子.这样就可以构建一个解释器,该解释器通过解释这些橘子来解决该问题. 比如说,我们常常会在字符串中搜索匹配的字符或者判断一个字符串是否…