红茶的个人站点

  • 首页
  • 专栏
  • 开发工具
  • 其它
  • 隐私政策
设计模式 with Python
经典设计模式的 Python 实现
设计模式 with Python

设计模式 with Python 16:其它模式(下)

解释器模式 我们前边介绍的大部分设计模式都是可以广泛应用于各种领域的,但是实际上也有许多设计模式是局限于一些专门领域的,比如解释器模式。 解释器模式(Interpreter Pattern)的用途相当专一:构建语言解释器。 关于编译原理的内容我早还给老师了,也不可能为了学习这个模式专门回头去看,所以这里简单地描述一下《Head First 设计模式》中介绍地内容就OK了,如果有兴趣地童鞋可以自行查找相关资料深入学习。 我们知道要发明一种新的编程语言,最重要的是规定相应的语法,并且创建一个语言的解释器,而该解释器的主…

2021年7月21日 0条评论 1357点热度 0人点赞 魔芋红茶 阅读全文
Python

设计模式 with Python 15:其它模式(上)

《Head First 设计模式》在附录中介绍了剩余的一些设计模式,在这里予以介绍和总结。 桥接模式 为了说明桥接模式,假设我们需要给不同品牌不同型号的电视机设计一款通用的遥控器,最简单最容易想到的设计应该是这样的: 我们通过一致性的接口RemoteControl来抽象了一个通用的遥控器“外观”,只要让具体的电视实现这个接口就行了。 但这样的设计在面临某些问题时缺乏可扩展性,比如如果我们需要开发出不同用户界面的遥控器,有的是目前的四案件,但有的要有数字按键,可以快速将电视切换到设置好的频道。也就是说我们需要多个“遥…

2021年7月20日 0条评论 1577点热度 0人点赞 魔芋红茶 阅读全文
设计模式 with Python

设计模式 with Python 14:与设计模式同行

虽然《Head First 设计模式》一书相当经典,但是依然没有介绍全部的设计模式,只是介绍了一些相对主流的设计模式,如果想更深入的了解设计模式,可以阅读这本《设计模式:可复用面向对象软件的基础》。 这本GOF著作的书籍可以说是设计模式的来源和最权威的著作。 在你更深入的学习设计模式相关的知识前,我们还需要像《Head First 设计模式》中最后一个章节那样对前边学习的部分进行一个总结。 什么是设计模式 这是我们学习设计模式绕不开的一个问题。 有意思的是《Head First 设计模式》的作者在书中提到,设计模式…

2021年7月19日 0条评论 1329点热度 0人点赞 魔芋红茶 阅读全文
Python

设计模式 with Python 13:复合模式(下)

相信有过互联网相关开发经验的肯定听说过MVC的大名。 简单地说,MVC即: Model:模型 View:视图 Controller:控制器 模型一般指一个系统中最基础最底层地数据层,包括数据的存储、查询以及一些业务带来的衍生处理逻辑。 视图很明确,一般就是可视化的部分,视应用种类的不同可能是UI控件,也可能是HTML元素。 控制器夹再视图和模型中间,起一个承上启下的作用,向上,它直接提供视图需要的接口,向下它调用模型的相关服务来完成接口的具体逻辑。 一般来说视图和控制器之间的界限是很明确的,但控制器和模型中间往往会…

2021年7月17日 0条评论 1443点热度 0人点赞 魔芋红茶 阅读全文
Python

设计模式 with Python 12:复合模式(上)

时隔多年,对《Head First 设计模式》一书的重新阅读和学习已接近尾声,这一章是关于如何将之前介绍的设计模式进行组合使用的,可以当做一种回顾与复习。 所谓的复合模式,就是对多种基本的设计模式进行组合使用,以解决某种会重复出现的一般性问题。 从上面的定义我们可以看到,复合模式并不是简单地对已有设计模式的组合,更重要的是要能解决某种一般性且会重复出现的问题,因为那样才能称之为“模式”。要知道我们前面介绍的所有设计模式,都是在解决某些特定问题时候被总结出来的解决方式的某种“套路”。如果单纯是解决某种一次性问题而组合…

2021年7月11日 0条评论 1275点热度 0人点赞 魔芋红茶 阅读全文
Python

设计模式 with Python 11:代理模式

对于现代人来说,代理模式非常好理解,毕竟天朝网民不知道网络代理的估计是少数,事实上《Head First 设计模式》中这一章节的大部分内容都在介绍一些代理模式的应用和变种,代理模式本身的描述篇幅相对不多。 这里我会遵循原书的结构,并且因为原书介绍的相关代理模式应用都是Java语言直接相关的例子,并不能用Python示例代替,所以这里也全部采用原书的Java示例进行说明。 就像前面所说的,代理模式的概念并不复杂,所以一开始我就阐述一下代理模式的概念。 代理模式 简单地说,代理模式就是真正的服务对象提供一种替代品,让这…

2021年7月10日 0条评论 1303点热度 0人点赞 魔芋红茶 阅读全文
Python

设计模式 with Python 10:状态模式

如果你接触过UML的状态图,应该会对状态图或者状态机有所了解,我们今天讨论的状态模式就是这种设计的落地方案。 和之前的讲解一样,我们从一个具体案例“饮料售卖机”开始进行讨论。 饮料售卖机 我们这里指的饮料售卖机就是街边常见的那种自动售货机,大概长这样: 老实的售卖机仅支持投币的方式,但新的机型支持网络支付,简单起见我们开发这这款仅支持投币,且只售卖一种饮料,且一块钱一瓶。这种简化会给我们少很多麻烦,毕竟我们不是真的要做一个饮料设备制造商😀 显然,饮料机在不同的状态支持不同的操作,整个购买饮料的过程就是通过一系列操作…

2021年7月8日 0条评论 1417点热度 1人点赞 魔芋红茶 阅读全文
Python

设计模式 with Python 9:迭代器模式

我们在初学编程语言的时候,除了在诸如变量、控制流程、面向对象这些编程基础内容上会话费大量精力以外,编程语言的内建集合(Collection)或者说内建容器,也同样是重中之重。无论是常用的数组、链表、映射或者是不常用的队列、堆栈等,都需要我们话费大量时间去学习,因为你工作后会发现编写程序的工作中有很大一部分时间是在与这些集合组件打交道。 而我们今天要讨论的迭代器模式,就是为了对于不同内部实现的集合提供一种统一的迭代方式,从而对于客户端来说屏蔽不需要了解的内部实现,可以简单地进行迭代、遍历工作,这是非常棒的一个想法。 …

2021年7月6日 0条评论 1416点热度 0人点赞 魔芋红茶 阅读全文
Python

设计模式 with Python 8:模版方法模式

这可能是会在日常工作中最最常用到的设计模式,没有之一。 以我过往的工作经验,无论是PHP的web框架程序,抑或是安卓本身的框架代码,都大量使用了模版方法模式,所以无论是从更容易的理解框架代码,还是让你使用类似的方式编写重用性更高的代码角度上说,掌握这个模式都是相当重要的。 Let's go. 茶与咖啡 假设我们要开一家奶茶店,需要对调制饮品进行规范化和程序化管理,首先我们自然需要观察现有的奶茶和咖啡冲泡流程。 class Tea:    def prepare(self):        self.boilWate…

2021年7月3日 0条评论 1468点热度 0人点赞 魔芋红茶 阅读全文
Python

设计模式 with Python 7:适配器模式

在本系列的前几篇文章中我提到过,设计模式事实上是编程领域的前辈为了解决某一类问题总结出来的通用解决方案,而编程这项工作其实本身也是为了用计算机语言来描述和解决某些现实问题,所以设计模式面对的某一类问题及相应解决方案其实也可以在现实中找到对应的实体。 就像我们这篇文章要说的适配器模式,适配器在现实中其实并不少见。从中学物理会提到的电源适配器(实质上是变压器,将220V交流电转换为直流电)到“水货”电子产品必备的适配插头(一般叫旅行用万能转换插头)。 万能转换插头大概长这个样子: 前者的目的是为了将发电厂输送到用户的交…

2021年7月1日 4条评论 3090点热度 0人点赞 魔芋红茶 阅读全文
12

魔芋红茶

加一点PHP,加一点Go,加一点Python......

专栏
  • SpringMVC 学习笔记 SpringMVC 学习笔记
  • MySQL学习笔记 MySQL学习笔记
  • Spring Boot学习笔记 Spring Boot学习笔记
  • Java编程笔记 Java编程笔记
  • php学习笔记 php学习笔记
  • Go语言编程笔记 Go语言编程笔记
  • 设计模式 with Python 设计模式 with Python
  • Linux之旅 Linux之旅
  • 腾讯云博客搭建 腾讯云博客搭建
  • HTTP学习笔记 HTTP学习笔记
项目
  • M3U-Helper M3U-Helper
  • Markdown-img Markdown-img
  • PEP中文翻译项目 PEP中文翻译项目
工具箱
  • 我的Windows软件列表 我的Windows软件列表
点歌台
最新 热点 随机
最新 热点 随机
Redis 学习笔记 6:消息队列 Redis 学习笔记 5:分布式锁 Redis 学习笔记 4:优惠券秒杀 Redis 学习笔记 3:黑马点评 Redis 学习笔记 2:Java 客户端 Redis 学习笔记 1:基础
Redis 学习笔记 4:优惠券秒杀Redis 学习笔记 5:分布式锁Redis 学习笔记 6:消息队列
从零开始 Sping Boot 20:多环境部署 Alist 阿里云 open 驱动挂了 Spring Framework 学习笔记4:AOP 设计模式 with Python 7:适配器模式 Typora升级到正式版 从零开始 Spring Boot 9:Shiro
最近评论
fuckbaidu 发布于 3 年前(02月26日) 兄弟,你新网址一直没备案成功
啊长 发布于 3 年前(12月17日) 膜拜大佬了,希望越做越好 :exclaim:
nfmd 发布于 4 年前(11月01日) 腾讯云出了个60块六年多的bug
nfmd 发布于 4 年前(10月30日) str.replace("逻辑", "罗辑")
fuckbaidu 发布于 4 年前(10月14日) 并不是所有的文件都能通过软链接转移,比如chrome浏览器,你要是转移了,就不能自动更新了
友情链接
  • NFMD's blog
  • 小金龙的blog
  • 幸哥的blog

COPYRIGHT © 2021 icexmoon.cn. ALL RIGHTS RESERVED.
本网站由提供CDN加速/云存储服务

Theme Kratos Made By Seaton Jiang

宁ICP备2021001508号

宁公网安备64040202000141号