![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
狠人王
怀着一颗热情的心,追随自己的梦想!
展开
-
【言简意赅聊设计模式】中介者模式
中介者模式是一种对象的行为模式。当多个对象彼此互相作用,形成一个作用系统时,我们可以称此种对象为同事对象(colleague)。可以想到此系统中对象与对象治之间的耦合程度是很深的,为了实现系统的稳定,实现松耦合,引入一个中介(mediator)又名调停者。图片来自:特种兵-AK47对象与对象的直接相互作用使得系统过度耦合。引入中介后的星形结构,使得结构相对稳定,当修改或者引入不会造成大量的代码改动,维持了系统的稳定性。调停者模式包括以下角色:1、抽象调停者2、具体调停原创 2020-06-06 19:35:53 · 243 阅读 · 0 评论 -
【言简意赅聊设计模式】模板方法模式
模板方法模式是一种行为设计模式。模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。在软件工程中,它是一种软件设计模式,和C++模板没有关连。在抽象类声明一套通用的逻辑框架,称为模板方法。子类重新实现抽象方法。实例:制作豆浆需要的步骤是:选材--添加配料--浸泡--放入豆浆机打碎,实现制作豆浆的流程。具体的豆浆有黑豆豆浆和花生豆浆。UML图:package moban;publ原创 2020-06-04 12:43:36 · 180 阅读 · 0 评论 -
【言简意赅聊设计模式】命令模式
命令模式属于对象的行为模式。命令模式把发出命令的责任和接受命令的责任放到两个不同的对象中,二者独立开来。命令模式的优点 ● 更松散的耦合 命令模式使得发起命令的对象(客户端)与执行命令的对象(接受者)完全解耦。 ● 更动态的控制 命令模式把请求封装起来,可以动态地对它进行参数化、队列化和日志化等操作,从而使得系统更灵活。 ● 很自然的复合命令 命令模式中的命令对象能够很容易地组合成复合命令,也就是宏命令,从而使系统操作更简单,功能更强大。 ●原创 2020-06-05 12:00:00 · 171 阅读 · 1 评论 -
【言简意赅设计模式】职责链模式(行为设计模式)
说明:责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。@特种兵-AK47https://blog.csdn.net/m13666368773/article/details/7702368责任链模式涉及到的角色如下所示: ● 抽象处理者(Han..原创 2020-06-05 10:15:45 · 174 阅读 · 0 评论 -
【言简意赅聊设计模式】组合模式
介绍组合模式,又叫部分整体模式。“将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。”“当发现需求中是体现部分与整体层次结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑组合模式了。”是一种结构性模式,当我们要处理的对象可以生成一棵树形结构(比如学校学院系的关系),而我们要对书上的节点和叶子进行操作时,它能够提供一致的方式,而不用考虑它是节点还是叶子。实例:大学--学院--系层次如何原创 2020-06-03 12:37:03 · 147 阅读 · 0 评论 -
【言简意赅聊设计模式】原型模式
原型模式:一种创建型的设计模式。其本质是复制已经存在的实例,多用于资源耗费较多的大量对象的创建。可以拿孙悟空拔几根毫毛复制自己类比,原型模式就是实现自我复制。GOF:Specify the kind of objects to create using a prototypical instance, and create new objects by copying this prototype. (使用原型实例指定将要创建的对象类型,通过复制这个实例创建新的对象。)在Java中可以直接使原创 2020-06-02 20:03:32 · 172 阅读 · 0 评论 -
【言简意赅聊设计模式】享元模式
三个月没学编程的班花找到了人称“设计模式扛把子”的Tony老师,并发誓一定要把享元模式搞明白。Q:享元模式的享元是什么意思?A:所谓享元就是共享对象(别想歪了),享元模式的关键即提供一个包含各种对象的池,那么不管某个对象你创建多少遍,其实都是最开始创建并存到享元池里的那一个。Q:听不懂,能举个例子吗?A:比如作为全公司唯一的程序员的你接到任务需要开发一些网页,包括三个技术博客网页,五个体育新闻网页,两个英语学习网页,四个LeetCode索引网页等等,最直接最无脑的做法就是一个网页一个网页的做原创 2020-06-01 19:15:32 · 216 阅读 · 0 评论 -
【言简意赅聊设计模式】依赖倒置原则
解释:依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。即所谓的面向接口编程。接口就是规范。依赖倒置原则是实现开闭原则的重要途径之一,它降低了客户与实现模块之间的耦合。使用接口或者抽象类的目的是制定好规范和契约,而不去涉及任何具体的操作,把展现细节的任务交给它们的实现类去完成。【言简意赅】:我这个人做事要先按照核心原则(接口或抽象类规范)去做,遇到具体问题要具体分析(派生类继承),但是核心原则一百年不动摇。其实就是定义接...原创 2020-05-16 18:49:44 · 136 阅读 · 0 评论 -
【言简意赅聊设计模式】:里氏代换原则
里氏代换原则:通俗来讲:子类可以扩展父类的功能,但不能修改父类的功能。即子类继承父类时,除添加新的方法完成新增功能外,不能重写父类的方法。里氏替换原则的主要作用如下。里氏替换原则是实现开闭原则的重要方式之一。 它克服了继承中重写父类造成的可复用性变差的缺点。 它是动作正确性的保证。即类的扩展不会给已有的系统引入新的错误,降低了代码出错的可能性。言简意赅:儿子要听老爸话,可以比老爸懂得多,但不能违背老爸的意志!几维鸟是一种特殊的鸟类,不具备飞行能力,即speed为0,理所当然飞.原创 2020-05-16 16:41:47 · 154 阅读 · 0 评论 -
如何利用反射技术和配置文件实现简单工厂模式的解耦合?
棘手的问题:在使用简单工厂模式时,如果有对工厂类进行添加case或者修改实例化对象名等需求,需要重新修改和编写程序并进行编译,很不方便,类与类耦合性较强!解决方法:可以使用反射,只需要对字符串进行修改即可进行实例化修改操作,实现解耦合。反射的书写格式为:首先:必须要有命名空间。using System.Reflection;其次:Operation oper=(O...原创 2020-03-13 23:02:00 · 491 阅读 · 0 评论