github地址:https://github.com/cheesezh/python_design_patterns 适配器模式 适配器模式,将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作[DP]. 当系统的数据和行为都正确,但是接口不符时,我们应该考虑使用适配器模式,目的就是使控制范围之外的一个原有对象与某个接口匹配.适配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况. class Targe…
目录 <Think Python>第17章学习笔记 17.1 面向对象的特性(Object-oriented features) 17.2 打印对象(Printing objects) 17.3 另一个例子(Another example) 17.4 一个更复杂的例子(A more complicated example) 17.5 __init__ 方法(The __init__ method) 17.6 __str__ 方法(The __str__ 方法) 17.7 运算符重载(Opera…
1.7调试 程序是很容易出错的.因为某种古怪的原因,程序错误被称为bug,而查捕bug的过程称为调试(debugging). 一个程序中可能出现3种类型的错误:语法错误.运行时错误和语义错误.对它们加以区分,可以更快的找到错误. 编程,特别是调试,有时候会引发强烈的情绪.如果你挣扎于一个困难的bug,可能会感到愤怒.沮丧以及窘迫. 有证据表明,人们会像对待人一样对待电脑.当电脑良好完成工作时,我们会把它们当作队友,而当他们难以控制.粗暴无礼的时候,我们会按照对待那些粗暴固执的人一样对待它们. 对…
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 单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例模式就能派上用场. 比如,某个服务器程序的配置信息存放在一个文件中,客户端通过一个 AppConfig 的类来读取配置文件的信息.如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很…
github地址:https://github.com/cheesezh/python_design_patterns 写在前面的话 """ 读书的时候上过<设计模式>这一门课,当时使用的教材是程杰老师的<大话设计模式>,使用的语言是C#,学过课程之后初期深感面向对象思想的伟大,但是很少应用到实际开发中.后来我接触了Python,现在工作中用到最多的也是Python,或许是因为Python的便利性,我写的很多脚本/程序都还是面向过程编程,缺少面向对象的…
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品牌的手机,也有小游戏,客户端…
什么是进程 触发任何一个事件时,系统都会将它定义为一个进程,并且给予这个进程一个ID,称为PID,同时依据触发这个进程的用户与相关属性关系,给予这个进程一组有效的权限设置. 进程与程序 进程:执行一个程序或命令就可以触发一个事件而取得一个PID. 程序:系统仅仅认识二进制文件,当系统工作时,需要启动一个二进制文件,这个文件就是程序. 程序放在磁盘中,通过用户的执行来触发.触发后加载到内存中成为一个个体,这就是进程.每个进程有给予执行者的权限/属性等参数,并包括进程所需要的脚本与数据,最后再给予一…
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…