草庐IT

Pytest初识

全部标签

初识设计模式 - 备忘录模式

简介备忘录设计模式(MementoDesignPattern)也叫作快照(Snapshot)模式,主要用于实现防丢失、撤销、恢复等功能。其定义是,在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象先前的状态。典型实现首先,定义一个备忘录Memento类存储状态,其代码示例如下:publicclassMemento{privateStringstate;publicMemento(Originatoro){this.state=o.getState();}publicvoidsetState(StringState){this.state=state;

初识设计模式 - 模板方法模式

简介在模板方法设计模式(TemplateMethodDesignPattern)中比较重要的两个概念是基本方法和模板方法。实现具体逻辑步骤的方法可以称之为基本方法,而把基本方法汇总起来形成一个总算法或总行为的方法称之为模板方法。基本方法包括以下几种类型:具体方法:在抽象类中声明,由具体子类实现抽象方法:在抽象类中已经实现,在具体子类中可以继承或重写钩子方法:在抽象类中已经实现,包括用于判断的逻辑方法和需要子类重写的空方法两种典型实现在模板方法模式中,最重要的就是定义好一个抽象类,并在其中归纳总结出一个模板方法。一般而言,其代码结构示例如下:publicabstractclassAbstract

初识设计模式 - 迭代器模式

简介迭代器设计模式(IteratorDesignPattern),也叫作游标设计模式(CursorDesignPattern)。迭代器模式将集合对象的遍历操作从集合类中拆分出来,放到迭代器类中,让两者的职责更加单一。其定义是,提供一种方法来访问聚合对象,而不暴露这个对象的内部实现。典型实现首先,定义一个用于遍历聚合对象中所存储元素的抽象迭代器接口,其代码示例如下:publicinterfaceIterator{//将游标指向第一个元素publicvoidfirst();//将游标指向下一个元素publicvoidnext();//判断是否存在下一个元素publicbooleanhasNext(

初识设计模式 - 享元模式

简介古代的活字印刷术就有点像享元模式,活字印刷就是将每个字模做出来,再印刷时再选取需要的字模到印刷板上,这样就构成了一页书的印刷板。这样的活字印刷大大提升了效率,减少了印刷板的空间。在享元模式中,存储共享实例对象的地方称为享元池(FlyweightPool)。类比到上述的活字印刷术中,放置字模的地方就是享元池。享元模式能做到共享的关键是区分了内部状态和外部状态,它们的简单释义是:内部状态:存储在享元对象内部且不跟随环境变化而改变的状态,内部状态可以在对象之间共享外部状态:通常由客户端保存,当需要时再传入享元对象中的状态,会跟随环境变化而改变,不可以在对象之间共享。典型示例一个典型的享元工厂类的

初识设计模式 - 命令模式

简介命令设计模式(CommandDesignPattern)可以将请求发送者和接收者完全解耦。发送者和接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。其定义是,将请求(命令)封装成一个对象,从而可用不同的请求对客户进行参数化(将不同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、撤销等(附加控制)功能。典型实现首先,定义一个抽象命令Command接口,通常仅声明一个执行命令的方法,其代码示例如下:publicinterfaceCommand{//业务处理方法voidexecute();}具体命令会实现各种类型的请求,其自身并不完

初识设计模式 - 命令模式

简介命令设计模式(CommandDesignPattern)可以将请求发送者和接收者完全解耦。发送者和接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。其定义是,将请求(命令)封装成一个对象,从而可用不同的请求对客户进行参数化(将不同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、撤销等(附加控制)功能。典型实现首先,定义一个抽象命令Command接口,通常仅声明一个执行命令的方法,其代码示例如下:publicinterfaceCommand{//业务处理方法voidexecute();}具体命令会实现各种类型的请求,其自身并不完

初识设计模式 - 职责链模式

简介职责链设计模式(ChainOfResponsibilityDesignPattern)的定义是,将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。同时,将这些接收对象串成一条链,并沿着这条链传递这个对象,直至链上的某个接收对象能够处理这个请求为止。职责链可以是一条直线、一个环或一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求。典型实现首先,定义一个抽象处理者Handler类,其代码示例如下:publicabstractclassHandler{//维持对下一个处理者的引用protectedHandlersuccessor;publicvoidsetHandler

初识设计模式 - 职责链模式

简介职责链设计模式(ChainOfResponsibilityDesignPattern)的定义是,将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。同时,将这些接收对象串成一条链,并沿着这条链传递这个对象,直至链上的某个接收对象能够处理这个请求为止。职责链可以是一条直线、一个环或一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求。典型实现首先,定义一个抽象处理者Handler类,其代码示例如下:publicabstractclassHandler{//维持对下一个处理者的引用protectedHandlersuccessor;publicvoidsetHandler

初识设计模式 - 状态模式

简介状态模式(StateDesignPattern)的定义是,允许一个对象在内部状态改变时改变它的行为,对象看起来似乎修改了它的类。在状态模式中,通常有两种方式实现状态转换:统一由环境类来负责状态之间的转换;由具体状态类来负责状态之间的转换。状态机概念状态模式一般用于实现状态机,而状态机常用在游戏、工作流引擎等系统开发中。状态机的实现方式有多种,除了状态模式,比较常用的还有分支逻辑法和查表法。状态机会有3个组成部分:状态(State)、事件(Event)、动作(Action)。拿“超级马里奥”游戏来举例,其中马里奥形态的转变就是一个状态机:初始状态是小马里奥,吃蘑菇这个事件会触发状态的转移,从

初识设计模式 - 状态模式

简介状态模式(StateDesignPattern)的定义是,允许一个对象在内部状态改变时改变它的行为,对象看起来似乎修改了它的类。在状态模式中,通常有两种方式实现状态转换:统一由环境类来负责状态之间的转换;由具体状态类来负责状态之间的转换。状态机概念状态模式一般用于实现状态机,而状态机常用在游戏、工作流引擎等系统开发中。状态机的实现方式有多种,除了状态模式,比较常用的还有分支逻辑法和查表法。状态机会有3个组成部分:状态(State)、事件(Event)、动作(Action)。拿“超级马里奥”游戏来举例,其中马里奥形态的转变就是一个状态机:初始状态是小马里奥,吃蘑菇这个事件会触发状态的转移,从