软件设计第一课
quick review 配合案例讲述设计模式(一些基础的java和uml知识) 设计时考虑如何使模式变得更好(实践出真知) auction auctionItem(封装和信息隐藏) 面向对象把细节隐藏在对象内部,把公共部分作为接口,抽...阅读全文
quick review 配合案例讲述设计模式(一些基础的java和uml知识) 设计时考虑如何使模式变得更好(实践出真知) auction auctionItem(封装和信息隐藏) 面向对象把细节隐藏在对象内部,把公共部分作为接口,抽...阅读全文
享元设计模式(Flyweight Design Pattern)通过共享技术实现相同或相似对象的重用,节省内存,前提是享元对象是不可变对象。 ...阅读全文
观察者模式也可以理解为:发布订阅模式 发布者状态更新,通过管道接口实现订阅者动态更新 1 class Middleware: 2 """ 3 发布者和订阅者交互类 4 0、订阅者容器列表 5 1、包括订阅者...阅读全文
组合设计模式(Composite Design Pattern)其应用场景非常特殊,主要用于处理树形结构数据,它可以让叶子对象和容器对象的使用具有一致性。 ...阅读全文
定义抽象基类,规范接口内部方法执行顺序 在进阶篇中,没专门提过抽象基类,在这里顺便就提一下 抽象基类的核心特征:不能被直接实例化(除非所有的抽象方法都被实现) 相反,抽象基类和元类一样,一般都被当做顶层基类使用,派生类必须实现抽象类中指...阅读全文
外观模式是最常用的结构型设计模式,也是一种非常容易理解的设计模式,其核心就是为多个子系统提供一个统一的接口,将这个接口看作是这些子系统的门面。 ...阅读全文
前后端开发模式 API接口、接口测试工具postman、restful规范、序列化与反序列化、djangorestframework快速使用 Django Rest_Framework rest-framework之APIView基本使...阅读全文
适配器设计模式(Adapter Design Pattern)可以将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。 ...阅读全文
定义 迭代器模式(Iterator pattern):用于顺序访问集合对象里的每一个元素,不用暴露集合是怎样存储元素的。 举例 某个班级有若干个学生,现在需要统计这些学生的平均分数。假设所有学生的分数是用数组存储的: int total...阅读全文
装饰器模式(Decorator Design Pattern)是一种结构型设计模式,通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。简单地说,就是允许向一个现有的功能添加新的功能,同时又不改变其结构。 ...阅读全文
桥接模式是一种在日常开发中不是特别常用的设计模式,主要是因为上手难度较大,但是对于理解面向对象设计有非常大的帮助。 ...阅读全文
代理设计模式(Proxy Design Pattern)指的是,在不改变原始类(或叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能,即扩展目标对象的功能。 ...阅读全文
实现AOP(面向切面编程)的一种便捷方式,额外扩展统一管理 装饰器的实现我在语言进阶篇中有提到,这里不再赘述 1 from decorator import decorator 2 3 4 @decorator 5 def pre_ex...阅读全文
简化应用程序内部接口,提供一个单一接口以供外部(前端or客户侧)调用 1 class Valley: 2 3 def run(self): 4 self.pre_declare() 5 self.declare() 6 self.aft...阅读全文
主要对象组成: 1、被构建目标对象 2、指挥官 3、实际构建者 4、指挥官与实际构建者交互接口 由于本人现阶段从事selenium方面工作,故经常和web页面打交道,在新框架构思过程中,正好期间学习到此设计模式,所以产生了一点想法,页面...阅读全文
一、简单工厂 创建对象的工作交由统一的函数接口来管理,传入不同的参数,返回不同的类对象 1 class AqSb: 2 3 def __repr__(self): 4 return "按期申报页面" 5 6 7 cl...阅读全文
1、元类实现 1 class Singleton(type): 2 def __init__(self, *args, **kwargs): 3 super().__init__(*args, **kwargs) 4 self._ins...阅读全文
前言 如果你第一次接触秒杀,可能还不太理解,库存100件就卖100件,在数据库里减到0就好了,这有什么麻烦的?理论上是这样,但是具体到业务场景中就没那么简单了。今天就聊聊减库存的设计,之后以高可用方案来结束秒杀设计的全部内容。 一、秒杀...阅读全文
前言 秒杀请求在高度集中在某一个时间点。这样一来,就会导致一 个特别高的流量峰值,它对资源的消耗是瞬时的 。能够抢到商品的人数是有限的,也就是说10人和1000人发 起请求的结果都是一样的。也就是说真正开始下单时,秒杀请求并不是越多越好...阅读全文
无论是我们在使用word还是记事本,系统都会为我们提供撤销的功能,这几乎是人人都会使用到的功能,而在我们实际开发中,会不会存在一个很复杂的对象,当更改了其中的某一个属性以后,也提供撤销的功能,可以快速恢复到更新前的状态。提供该功能的模式...阅读全文