![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
23种设计模式
文章平均质量分 63
23种设计模式整理
林光虚霁晓
这个作者很懒,什么都没留下…
展开
-
Python与设计模式--观察者模式
观察者中定义了update接口,如果被观察者状态比较多,或者每个具体的观察者方法比较多,可以通过update传参数进行更丰富的控制。下面构造被观察者。被观察者中首先将观察对象加入到观察者数组中,若发生情况,则通过notifyAll通知各观察者。打印如下:SprayDial 119…原创 2023-11-26 14:19:45 · 672 阅读 · 0 评论 -
22-Python与设计模式--状态模式
为在业务中调度状态转移,还需要将上下文进行记录,需要一个上下文的类。这样,在进行电梯的调度时,只需要调度Context就可以了。原创 2023-11-26 14:19:31 · 662 阅读 · 0 评论 -
Python与设计模式--设计原则
【代码】Python与设计模式--设计原则。原创 2023-11-26 14:18:48 · 663 阅读 · 0 评论 -
Python与设计模式--备忘录模式
首先,创建游戏角色。GameCharacter定义了基本的生命值、攻击值、防御值以及实现角色状态控制的方法,FightCharactor实现具体的“战斗”接口。为实现保存进度的细节,还需要一个备忘录,来保存进度。复制代码万事俱备,在业务逻辑中可以进行类的调度了。原创 2023-11-26 14:18:34 · 765 阅读 · 0 评论 -
Python与设计模式--解释器模式
Python与设计模式--解释器模式原创 2023-11-26 14:18:21 · 741 阅读 · 0 评论 -
Python与设计模式--访问者模式
药品类中有两个子类,抗生素和感冒药;药方类将待处理药品进行整理,并组织Visitor依次处理。原创 2023-11-26 14:18:09 · 692 阅读 · 0 评论 -
Python与设计模式--迭代器模式
打印如下:在这种迭代器的使用过程中,如果next超过了迭代范围,会抛出异常。在python对象的方法中,也可以轻易使用迭代器模式构造可迭代对象,__iter__和next实现了迭代器最基本的方法。打印如下:注意__iter__方法中的返回值,由于直接返回了self,因而该迭代器是无法重复迭代的,只能打印一遍平方值。这样,在每次迭代时都可以将迭代器“初始化”,就可以多次迭代了。另外,在python中,使用生成器可以很方便的支持迭代器协议。生成器通过生成器函数产生,原创 2023-11-26 14:17:56 · 763 阅读 · 0 评论 -
Python与设计模式--模板模式
现在查询机构很多,我们可以根据不同的查询机构和查询方式,来通过继承的方式实现其对应的股票查询器类。打印结果如下:每次操作,都会调用登录,设置代码,查询,展示这几步,是不是有些繁琐?既然有些繁琐,何不将这几步过程封装成一个接口。由于各个子类中的操作过程基本满足这个流程,这样,在业务场景中,就可以通过operateQuery一气呵成了。这种基本每个程序员都会想到的解决方案,就是模板模式。很简单吧。但也许你会问,登录并不一定每次都会成功呀?原创 2023-11-26 14:17:45 · 756 阅读 · 0 评论 -
Python与设计模式--中介者模式
当各个类在初始时都会指定一个中介者,而各个类在有变动时,也会通知中介者,由中介者协调各个类的操作。打印结果如下:!!原创 2023-11-26 14:17:17 · 681 阅读 · 0 评论 -
Python与设计模式--命令模式
前台服务员系统与后台系统的交互,我们可以通过命令的模式来实现,服务员将顾客的点单内容封装成命令,直接对后台下达命令,后台完成命令要求的事,即可。前台系统中的notify接口直接调用命令中的execute接口,执行命令。原创 2023-11-26 14:17:03 · 690 阅读 · 0 评论 -
Python与设计模式--责任链模式
request类封装了假期请求。在具体的经理类中,可以通过setSuccessor接口来构建“责任链”,并在handleRequest接口中实现逻辑。原创 2023-11-26 14:16:45 · 708 阅读 · 0 评论 -
Python与设计模式--策略模式
snd_way向客户发送信息的方式,该方式置为可设,即可根据业务来进行策略的选择。在业务场景中将发送方式作为策略,根据需求进行发送。原创 2023-11-26 14:16:29 · 608 阅读 · 0 评论 -
Python与设计模式--桥梁模式
Python与设计模式--桥梁模式原创 2023-11-26 14:16:13 · 622 阅读 · 0 评论 -
Python与设计模式--享元模式
假设有一个网上咖啡选购平台,客户可以在该平台上下订单订购咖啡,平台会根据用户位置进行线下配送。咖啡工厂中,getCoffeeCount直接返回当前实例个数。打印如下:根据结果可以得知,该模式下三个用户点了两种咖啡,最终的咖啡实例为2,而不是3。原创 2023-11-24 12:02:08 · 938 阅读 · 0 评论 -
Python与设计模式--组合模式
在该例中,公司结构抽象仅考虑公司(ConcreteCompany)和部门(Department),公司有子公司的可能性,公司也有自己的部门,部门是最终的叶子结点。假设总公司下设东边的分公司一个,东边的分公司下设东北公司和东南公司,显示公司层级,打印如下:–HQ HR–HQ R&D。原创 2023-11-24 11:59:10 · 800 阅读 · 0 评论 -
Python与设计模式--门面模式
假设有一组火警报警系统,由三个子元件构成:一个警报器,一个喷水器,一个自动拨打电话的装置。在业务中如果需要将三个部件启动,例如,如果有一个烟雾传感器,检测到了烟雾。原创 2023-11-24 11:56:20 · 736 阅读 · 0 评论 -
Python与设计模式--适配器模式
为在A公司平台复用B公司接口,直接调用B公司人员接口是个办法,但会对现在业务流程造成不确定的风险。为减少耦合,规避风险,我们需要一个帮手,就像是转换电器电压的适配器一样,这个帮手 就是协议和接口转换的适配器。适配器将B公司人员接口封装,而对外接口形式与A公司人员接口一致,达到用A公司人员接口访问B公司人员信息的效果。原创 2023-11-24 11:53:29 · 895 阅读 · 0 评论 -
Python与设计模式--装饰器模式
又提到了那个快餐点餐系统,不过今天我们只以其中的一个类作为主角:饮料类。除了基本配置,快餐店卖可乐时,可以选择加冰,如果加冰的话,要在原价上加0.3元;卖牛奶时,可以选择加糖,如果加糖的话,要原价上加0.5元。怎么解决这样的问题?可以选择装饰器模式来解决这一类的问题。构建好装饰器后,在具体的业务场景中,就可以与饮料类进行关联。原创 2023-11-24 11:50:14 · 897 阅读 · 0 评论 -
Python与设计模式--代理模式
代理模式是一种使用频率非常高的模式,在多个著名的开源软件和当前多个著名的互联网产品后台程序中都有所应用。下面我们用一个抽象化的简单例子,来说明代理模式。infoServer有接收和发送的功能,发送功能由于暂时用不到,保留。另外新加一个接口show,用来展示服务器接收的内容。接收的数据格式必须如info_struct所示,服务器仅接受info_struct的content字段。那么,如何给这个服务器设置一个白名单,使得只有白名单里的地址可以访问服务器 呢?原创 2023-11-24 11:46:02 · 927 阅读 · 0 评论 -
Python与设计模式--原型模式
大家如果用过类似于Photoshop的平面设计软件,一定都知道图层的概念。图层概念的提出,使得设计、图形修改等操作更加便利。设计师既可以修改和绘制当前图像对象,又可以保留其它图像对象,逻辑清晰,且可以及时得到反馈。本节内容,将以图层为主角,介绍原型模式。首先,设计一个图层对象。在实际的实现中,图层实现会很复杂,这里仅介绍相关的设计模式,做了比较大的抽象,用background表示背景的RGBA,简单用content表示内容,除了直接绘画,还可以设置透明度。原创 2023-11-24 11:42:16 · 1334 阅读 · 0 评论 -
Python与设计模式--建造者模式
今天的例子,还是上一次谈到的快餐点餐系统。只不过,今天我们从订单的角度来构造这个系统。最先还是有请上次的主角们:最终,我们是要建造一个订单,因而,需要一个订单类。假设,一个订单,包括一份主食,一份小食,一种饮料。(省去一些异常判断)代码中的orderBuilder是什么鬼?这个orderBuilder就是建造者模式中所谓的“建造者”了,先不要问为什么不在order类中把所有内容都填上,而非要用builder去创建。接着往下看。原创 2023-11-24 11:38:13 · 1095 阅读 · 0 评论 -
4-Python与设计模式--抽象工厂模式
首先,来看主餐的生成(仅以两种汉堡为例)。其次,是小食。(内容基本一致)以上的Burger,Snack,Beverage,都可以认为是该快餐店的产品,由于只提供了抽象方法,我们把它们叫抽象产品类,而cheese burger等6个由抽象产品类衍生出的子类,叫作具体产品类。接下来,“工厂”就要出现了。同样,foodFactory为抽象的工厂类,而burgerFactory,snackFactory,beverageFactory为具体的工厂类。在业务场景中,工厂模式是如何“生产”产品的呢?原创 2023-11-24 11:34:36 · 924 阅读 · 0 评论 -
3-Python与设计模式--简单工厂模式
首先,来看主餐的生成(仅以两种汉堡为例)。其次,是小食。(内容基本一致)最后,是饮料。以上的Burger,Snack,Beverage,都可以认为是该快餐店的产品,由于只提供了抽象方法,我们把它们叫抽象产品类,而cheese burger等6个由抽象产品类衍生出的子类,叫作具体产品类。接下来,“工厂”就要出现了。同样,foodFactory为抽象的工厂类,而burgerFactory,snackFactory,beverageFactory为具体的工厂类。原创 2023-11-24 11:28:30 · 900 阅读 · 0 评论 -
2-Python与设计模式--工厂类相关模式
如果,将每一个细致的产品都建立对应的工厂(如cheeseBurger建立对应一个cheeseBurgerFactory),这样,生成食物时,foodClass也不必指定。同样,foodFactory为抽象的工厂类,而burgerFactory,snackFactory,beverageFactory为具体的。以上的Burger,Snack,Beverage,都可以认为是该快餐店的产品,由于只提供了抽象方法,可见,业务中先生成了工厂,然后用工厂中的createFood方法和对应的参数直接生成产品实例。原创 2023-11-24 11:21:57 · 801 阅读 · 0 评论 -
1-Python与设计模式--单例模式
【代码】1-Python与设计模式--单例模式。原创 2023-11-24 11:14:31 · 896 阅读 · 0 评论 -
2-Python与设计模式--前言
【代码】2-Python与设计模式--前言。原创 2023-11-24 11:09:12 · 790 阅读 · 0 评论 -
1 Python实现23种计模式
单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式策略模式、责任链模式、命令模式、中介者模式、模板模式、迭代器模式、访问者模式、观察者模式、解释器模式、备忘录模式、状态模式原创 2023-11-24 10:33:47 · 754 阅读 · 0 评论