![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 62
111111
冷眼观world
社畜
展开
-
Strategy策略模式
在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。策略模式解决如何在运行时根据需要透明地更改对象的算法,将算法与对象本身解耦,从而避免上述问题。用代码讲解:这里如果要新增一个别的税收算法比如FR,就要在代码中有两处改动,违背了封闭开放原则。使用策略模式进行改正:策略模式就是定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(原创 2022-06-02 23:32:14 · 67 阅读 · 0 评论 -
模板方法模式
从目的来看:在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。所以需要在确定稳定操作结构的前提下,来灵活应对各个子步骤的变化或者晚期实现需求。用代码来讲解:library开始一定是比application要早的,如果开发早的调用开发晚的称为晚绑定,开发晚的调用开发早的称为早绑定定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟(变化)到子类(延迟到子类指子类覆盖虚函数)中原创 2022-06-02 22:09:30 · 89 阅读 · 0 评论 -
面向对象设计原则
高层模块(一般是稳定的)不应该依赖于低层模块(一般是变化的),二者都应该依赖于抽象(稳定的)像上面的代码中,MainForm就属于高层模块,而Line、Rectangle(忽略我们自己加的Circle)就属于低层模块。而写法一中稳定的MainForm就依赖于会变化的Line和Rectangle。而写法二就改成依赖于一个抽象出来的Shape类,Line和Rectangle都是依赖于Shape这个抽象的。......原创 2022-06-02 20:52:49 · 84 阅读 · 0 评论