红茶的个人站点

  • 首页
  • 专栏
  • 开发工具
  • 其它
  • 隐私政策
专栏
系列文章
Python

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

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

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

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

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

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

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

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

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

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

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

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

设计模式 with Python 6:命令模式

命令模式 命令模式是一种将命令的调用方和接收(实现)方解耦的设计模式。 如果不明白这句话的意思,不用担心,看完这篇文章就能理解了。 智能家居APP 假设我们需要开发一款智能家居客户端,我们需要接入不同厂家不同标准的只能家居产品,虽然这些产品都提供了SDK,但具体的SDK调用方式并不相同,比如: 用过小米台灯的应该知道,这款台灯有多个级别的亮度可以调节,而普通的台灯可能只能设置开和关,现在我们的APP需要同时接入这两款台灯,假设我们的控制面板上将接入的智能家居以一个个方块状控件显示,图标和名称表示是哪个智能家居产品,…

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

设计模式 with Python 5:单例模式

单例模式是一个相对简单的模式,但极为重要。 在我过往的工作经验中,这个模式相当实用,换言之,你可能会在项目中频繁看到,或者使用这个模式,但就像介绍前几个模式时候说的那样,我们需要保持清醒,不能为了使用模式而使用,而是要谨慎评估是否应该使用。当然这并不容易,而且往往比实现具体的设计模式更难。 好了,闲话少说,我们直接来看单例模式。 单例模式 所谓的单例模式就是为了确保只生成一个类实例的而生的模式。 这在使用访问修饰符的编程语言中很简单,只需要合适地使用访问修饰符和一个类方法即可: package pattern5.j…

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

设计模式 with Python 4:工厂模式

工厂模式实质上包含两种不同的设计模式:工厂方法和抽象工厂。但他们本质上都是对创建对象进行封装,从而实现某种程度上的解耦的设计模式,所以放在一起进行介绍。 和《Head First 设计模式》不同,这里采用汉堡店的例子进行说明,因为我没吃过几次披萨,对披萨的种类知之甚少,所以就不用披萨店作为例子,但本质上两者除了名称没有根本上的区别。 汉堡店 假设我们要开一家汉堡店,并提供多种汉堡可供顾客点餐,最初的设计可能是这样的: HamburgStore是我们的汉堡店,通过orderHamburg方法可以点餐,具体的汉堡类有:…

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

设计模式 with Python3:装饰器模式

在撰写Python学习笔记系列文章的时候,函数装饰器和类装饰器提到过很多次,这也是Python编程中比较难理解和进阶的内容。当时我也顺便提到其本质是设计模式中的装饰器模式,那么今天我们就看一下经典设计模式中的装饰器模式到底是怎样的。 关闭开放原则 随着设计模式的学习深入,你就会发现设计模式的本质其实上是将复杂问题中的不可变部分和可变部分进行区分和封装,进而达到一种对不可变部分进行充分复用,对可变部分进行灵活扩展的程度。 当然,这在实际解决问题的时候你就会发现是一种相当理想化且极其艰难的事情,但好在我们已经有大佬们总…

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

设计模式 with Python2:观察者模式

虽然这个系列上一篇已经是在一个多月之前了:设计模式 with Python1:策略模式,但经过系统学习完《Fluent Python》,对Python这个语言的特性有了更深一层的认识,而且对于设计模式也是,就像《Fluent Python》的作者说的那样,设计模式虽然是一种编程语言无关的通用思想,但是具体到某种语言的实现本身,还是会无可避免地因为语言特性而变得天差地别(关于这点,在Python学习笔记23:Python设计模式中有详细说明。)。 所以,在接下来的本系列文章的撰写中,我会结合《Head First 设…

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

Python学习笔记38:类元编程

《Fluent Python》中多次提到,在Python中,类和函数都是一类对象,这指的是其开放程度对于Python语言的定制者和普通开发者是相同的,拥有同样的权限,我们可以像Python语言的底层开发人员那样,对类和函数进行定制和改造,以实现某种“高级需求”。 虽然对于普通的开发者来说似乎用不到,但作为语言学习的一部分,了解这部分知识至少对帮助你更深入的理解这门语言是有益的。而书中也提到,Python之所以能流行,似乎这种对于初学者好用的同时为资深开发者提供高级工具的特性带来很多益处。 在接下来我会按照《Flue…

2021年6月4日 0条评论 1314点热度 0人点赞 魔芋红茶 阅读全文
1…1718192021…24

魔芋红茶

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

技术栈
  • SpringMVC SpringMVC
  • MySQL MySQL
  • SpringBoot SpringBoot
  • Go lang Go lang
  • php php
  • Java Java
  • 设计模式 设计模式
  • Linux Linux
  • Wordpress Wordpress
  • HTTP HTTP
  • Python Python
  • SpringCloud SpringCloud
  • Activiti Activiti
  • debug debug
  • 前端开发 前端开发
  • Redis Redis
  • Maven Maven
  • 生活随笔 生活随笔
项目
  • activiti-util activiti-util
  • auto-hot-key auto-hot-key
  • bilibili-down bilibili-down
  • haokan-down haokan-down
  • i-tree i-tree
  • M3U-Helper M3U-Helper
  • MD-img MD-img
  • oa-demo oa-demo
  • PEP中文 PEP中文
  • 油猴脚本 油猴脚本
工具箱
  • 我的Windows软件列表 我的Windows软件列表
Music
最新 热点 随机
最新 热点 随机
Spring 源码学习 13:处理响应和异常 Spring 源码学习 11:类型转换 Spring 源码学习 12:控制器方法 每天一个 Idea 小技巧:文件模版 Homebrew 安装指南 更换 WSL 版本
Spring 源码学习 6:AOPSpring 源码学习 8:AOP 实现每天一个 Idea 小技巧:复制粘贴Spring 源码学习 7:动态代理Linux 安装 JDKSpring 源码学习 4:Aware 接口
PEP 635 -- Structural Pattern Matching: Motivation and Rationale Java编程笔记29:JSP Java编程笔记14:泛型(续) 从零开始 Spring Boot 61:JPA 中的级联类型 从零开始 Spring Boot 8:Swagger 玩转小米盒子3:ATV Launcher 设置
最近评论
魔芋红茶 发布于 3 年前(03月12日) 不好意思,上个月有点事,没空搞网站,现在弄好了,已经启用了新域名,谢谢关心~~
fuckbaidu 发布于 3 年前(02月25日) 兄弟,你新网址一直没备案成功
魔芋红茶 发布于 4 年前(12月18日) 谢谢。
啊长 发布于 4 年前(12月16日) 膜拜大佬了,希望越做越好 :exclaim:
nfmd 发布于 4 年前(10月31日) 腾讯云出了个60块六年多的bug
友情链接
  • NFMD's blog
  • 小金龙的blog
  • 幸哥的blog

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

Theme Kratos Made By Seaton Jiang

宁ICP备2021001508号

宁公网安备64040202000141号