《设计模式》
文章平均质量分 70
设计模式
王卫——David
CSDN博客专家 阿里云专家博主 Java领域优质创作者
展开
-
架构师培养计划-无限思维——变量
老师原话:我们做软件开发的需要有想象力和创造力,这是需要在学习代码过程中不断的去培养和提高的一个过程。同样代码,不同的人看到的却是不同的思想,不同的发展与未来。版本二从版本一到版本二代码和形式有哪些不同,从软件工程学的角度看,非常巨大的进步是什么?单纯从代码的角度来说,版本一是通过两个定值进行相加,而版本二是首先声明量两个变量,并且给了这两个变量进行了赋值,最后进行变量的相加。从软件工程学的角度看巨大的进步是什么呢?版本二对于版本来说,实现了从有限到无限的扩展,从两个确定数相加到两个任意数相加,原创 2022-06-19 10:04:06 · 5505 阅读 · 0 评论 -
面向对象-理解多态看这一篇博客就行了
上周老师讲课再次讲到了多态,经过课下的消化,又有一些新的收获。学习多态还是要从基本的概念上入手,明确基本概念,下面来学习一下基本概念并与代码进行对应。通过编写代码也能够很好的检验是否学会了多态。多态是指为不同数据类型的实体提供统一的接口,同一操作作用于不同的对象,可以有不同的解释产生不同的执行结果.这是对多态的一种解释。整体上看有点复杂不知道怎么入手,我们先用计算机思维逐层拆解。先拆为两部分,第一部分:为不同数据类型的实体提供统一的接口和第二部:同一操作作用于不同的对象,可以有不同的解释产生不同的执行结果.原创 2022-06-07 11:07:56 · 5560 阅读 · 5 评论 -
面向对象的三大特征(3)-多态
多态什么是多态?多态解决了什么问题?二级目录三级目录什么是多态?多态(英语:polymorphism)指为不同数据类型的实体提供统一的接口。 简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作。多态解决了什么问题?和替换性二级目录三级目录...原创 2022-05-28 10:52:12 · 5449 阅读 · 0 评论 -
面向对象程序设计原则——依赖倒置原则(DIP)
依赖倒置原则1、什么是依赖倒置原则(Dependence Invarsion)1.1、依赖倒置中设计到的名词概念依赖倒置的应用场景依赖倒置解决了什么样的问题示例参考资料1、什么是依赖倒置原则(Dependence Invarsion)高层模块不应该依赖于低层模块,他们都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。1.1、依赖倒置中设计到的名词概念依赖:首先依赖导致中的依赖并不是uml六种关系中的依赖。依赖倒置原则中的依赖,指的是A要做一件事必须要用到B,如果不用B那么这件事就干原创 2022-05-25 10:26:58 · 5860 阅读 · 0 评论 -
大话设计模式——中介者模式
一、概念①、什么是中介者模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变他们之间地交互。②、主要解决什么问题?对象之间相互连接的激增,引起的对象之间的高耦合③、如何解决定义一个中介者Mediator,将对象之间的行为转移到交互上。④、什么时候使用?一般应用于一组对象以定义良好但是复杂的方式进行通信的场合⑥、优缺点优点避免了对象之间的行为,减少了对象之间的耦合缺点控制集中化,加大了中介者的复杂性二、图Coll原创 2022-03-27 22:06:30 · 5705 阅读 · 0 评论 -
大话设计模式——解释器模式
一、定义①、什么是解释器模式给定一个语言,定义它得到文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。②、主要解决什么问题对于一些固定的文法构建一个解释句子的解释器③、如何解决构建语法树,定义终极符与非终结符④、什么时候使用如果一种特定类型的问题发生的频率足够高,那么可能就值得该问题的各个实例表述为一个简单语言的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题⑤、使用场景可以将一个需要解释执行的语言中的句子表示为一个抽象的语法树一些重复出现原创 2022-03-13 22:13:30 · 1930 阅读 · 3 评论 -
设计模式——创建将模式总结
设计模式分类创建型创建型模式设计到将对象实例化,这类模式都提供一个方法,将客户从所需实例化的对象中解耦结构型结构型模式可以让你把类或对象组合到更大的结构中。行为型行为型,都设计到类和对象如何交互及分配职责创建型模式创建型模式分类解读:为什么将创建型模式分为直接和间接???分类的主要依据是客户端想要一个具体的产品,是否通过了第三方。直接:如单例模式,如果客户端想要一个具体的产品,是直接类名.方法名,当然客户端不知道类里面的具体细节。如:原型模式,如果客户端想要一个具体的产品,是直接原创 2022-03-13 22:02:23 · 336 阅读 · 0 评论 -
设计模式-建造者模式
一、定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示简单来说:建造者模式,将一个产品的内部表象与产品的生成过程分隔开,从而可以使一个建造过程生成具有不同的内部表象的产品对象。如果我们使用建造者模式,那么用户就只需要指定需要建设的类型就可以得到他们,而具体建造的过程和细节就不需要知道Director:指挥者,是构建一个使用Builder接口的对象Builder:是为创建一个Product对象的各个部件指定的抽象接口ConcreteBuilder:具体建造者,实现Bui原创 2021-12-30 20:32:57 · 375 阅读 · 0 评论 -
设计模式——外观模式
一、概念①、什么是外观模式为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。这个外观类为子系统提供一个共同的对外接口,客户对象通过一个外观接口读写子系统中各接口的数据资源②、什么情况下使用外观模式设计初期阶段,有意识的将不同层分离,层与层之间建立外观模式开发阶段,子系统越来越复杂,增加外观模式提供一个简单的接口维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互③、原创 2021-12-30 20:31:06 · 279 阅读 · 0 评论 -
设计模式-原型模式
一、定义用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。通俗点来讲就是克隆指定的对象原型模式其实就是从一个对象再创建另一个可定制的对象,而且不需要知道任何创建的细节。Prototype:为克隆对象提供一个克隆接口ConcretePrototype:实现克隆接口来完成克隆自身的操作二、特点原型模式中的拷贝对象分为:浅复制和深复制浅复制:被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其它对象的引用都仍指向原来的对象简单来说:对于引用类型来说克隆的对象如果修改了相原创 2021-12-30 20:29:19 · 266 阅读 · 0 评论 -
设计模式-命令模式
命令模式一、概念①什么是命令模式②为什么使用命令模式③如何使用命令模式类图实例类图代码客户端服务员烧烤者抽象命令类具体命令类一、概念①什么是命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对讲求排队或记录请求日期,以及支持可撤销的操作。②为什么使用命令模式1.能够容易的将命令写入日志,加入新的具体命令类比较容易2.可以容易的实现对请求的撤销和重做。3.将一个操作的对象与知道怎么执行一个操作的对象分开。③如何使用命令模式在具体命令类的方法里面调用执行者,而在请求者的方法原创 2021-10-24 21:25:36 · 772 阅读 · 2 评论 -
机房合作-策略模式实现用户充值
策略模式实现用户充值一、概念①什么是策略模式?②如何使用策略模式?③为什么要使用策略模式?类图实战、策略模式实现用户充值类图代码实现Context类RechargeStrategy类StrategyReturn类业务逻辑实现层一、概念①什么是策略模式?Strategy:它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化不会影响到使用算法的用户。②如何使用策略模式?将每个算法都封装起来、定义一个策略类并且在策略类中定义一个所有算法的公共接口、定义一个context类用来维护对原创 2021-10-16 14:30:34 · 222 阅读 · 3 评论 -
机房合作-职责链模式实现用户登陆
职责链模式实现用户登陆一、概念①什么是职责链模式②如何使用职责链模式(chain of responsibility)③什么时候使用职责链模式④为什么要使用职责链模式二、类图三、实战 使用职责链模式实现登陆①类图实现代码HandlerLgoin类PassWordHandler类ActivationHandler类OnlineHandler类ActivationHandler类业务逻辑层一、概念①什么是职责链模式Chain of Responsibility :使用多个对象都有机会处理请求,从而避免请求原创 2021-10-15 15:15:01 · 203 阅读 · 2 评论 -
备忘录模式-实现撤销功能
设计模式-备忘录模式一、概念①什么是备忘录模式②备忘录模式主要解决了什么问题③备忘录如何解决这个问题的④主要符合哪种设计原则二、备忘录模式类图三、实战演练,管理员修改基础数据实现撤销功能。①类图②代码实现PriceOriginator类PriceMemento类PriceCaretaker类业务逻辑层应用保存对象状态实现撤销一、概念①什么是备忘录模式在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。在需要的时候可以将对象恢复到原来保存的状态。②备忘录模式主要解决了什么问题原创 2021-10-13 17:13:25 · 449 阅读 · 2 评论 -
设计模式——创建型模式
设计模式——创建型模式设计模式分类创建型结构型行为型创建型模式创建型模式分类单例模式图与代码的对应(图和代码皆引用自大话设计模式)要点使用场景原型模式图和代码的对应(图和代码皆引用自大话设计模式)要点应用场景建造者模式设计模式分类创建型创建型模式设计到将对象实例化,这类模式都提供一个方法,将客户从所需实例化的对象中解耦结构型结构型模式可以让你把类或对象组合到更大的结构中。行为型行为型,都设计到类和对象如何交互及分配职责创建型模式创建型模式分类解读:为什么将创建型模式分为直接和间接???原创 2021-08-20 08:03:48 · 179 阅读 · 3 评论 -
C#机房重构-修改密码之职责链模式+反射
C#机房重构-修改密码之职责链模式+反射前言修改密码类图代码实现配置文件B层代码职责链类Handler类PastPassWordHandler类NewPassWordHandler类UpDatePassWordFactory类前言通过小组集体学习,深入的讨论学习了职责链模式,职责链模式主要处理的业务逻辑常是顺序或者是选择结构,提出的请求沿着这条对象链传递一直到有对象能够处理为止。由于职责链不太符合开闭原则,我如果在这条业务线加一个功能,可能就需要重新排序,就需要修改类里面的代码,这时候我们可以利用反射和原创 2021-07-25 17:29:56 · 236 阅读 · 5 评论 -
设计模式——访问者模式
访问者模式概念图代码概念①、什么是访问者模式表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变个元素的类的前提下定义作用于这些元素的操作转:②、访问者模式中例子为什么是男人、女人呢,与访问者是什么关联呢,谁是访问者,谁是被访问者?个人理解:我们将对象结构看成是一个“房间”,将男人女人实例化到对象结构中去,可以看做是在对象结构这个“屋子”中放入一个男人,一个女人,他(她)们的身份是被访问者。此时状态(成功)作为访问者进入房间后依次访问男人、女人并实现他们;随后状态(失败)也作为一个访问者去原创 2021-06-30 20:39:26 · 128 阅读 · 6 评论 -
C# 机房重构单例模式
机房重构单例模式前言单例模式实例前言 在进行机房重构时,会出现每点击一次“实例化窗体按钮”,就会出现一个窗体,这样点击多次就会出现很多个窗体。怎么解决这个问题呢?这儿就需要用到设计模式中的单例模式了。单例模式单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。设计模式书上说:通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让泪自身负责保存它的唯一实例。这个类可以保证没有其他势力可以被创建,并且他可以提供一个访问该实例的方法。要点:1.这原创 2021-06-30 20:08:20 · 184 阅读 · 5 评论 -
设计模式——模板方法模式
设计模式——模板方法模式概念图代码概念①、什么是模板模式?定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模块方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。简单来说:模块方法模式是通过把不变行为搬移到超类,去除子类的重复代码来体现它的优势。②、主要解决什么问题一些通用的方法,却在每一个子类都重写了这一类方法③、如何解决?将这些通用算法抽象出来④、优缺点优点:提供了一个分号的代码复用平台帮助子类拜托重复的不变行为的纠缠封装不变部分,扩展可变部分缺点:原创 2021-05-31 21:32:32 · 226 阅读 · 5 评论 -
设计模式——代理模式
设计模式——代理模式概念图代码类图关系与代码展示概念①、什么是代理模式为其他对象提供一种代理以控制对这个对象的访问通俗点来说就是 通过一个共同的方法,将你对对象的真实请求交给proxy完成②、主要解决什么问题在某些情况下,一个客户类不想或不能直接引用一个委托对象③、如何解决?在客户类和委托对象之间增加一个中介者对象④、优缺点优点在符合开闭原则的情况下对目标对象进行功能扩展缺点为每一个服务都得创建代理类,工作量太大,不易管理。同时接口一旦发生变化,代理类也得相应修改图Subje原创 2021-05-31 21:28:51 · 189 阅读 · 5 评论 -
设计模式——装饰模式
设计模式——装饰模式概念图实例类图关系展示概念①、什么是装饰模式动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。②、解决什么问题?需要动态添加一些额外的职责,解决子类数据过多③、怎么解决通过Decorator装饰类一层一层对具体对象进行装饰④、什么时候使用可以动态添加或删除对象的职责,并使得需要装饰得具体组件类和具体装饰类可以独立变化,以便增加新的具体组件类和具体装饰类。⑤、优缺点优点装饰模式与继承关系得目的都是要扩展对象得功能,但是Decorator原创 2021-05-31 21:25:19 · 189 阅读 · 4 评论 -
设计模式思考总结
目录前言一、什么是设计模式(Design Pattern)二、设计模式的来源三、为什么要学习设计模式前言今天被这几个问题问住了,什么是设计模式?为什么要学习设计模式?设计模式的来源?瞬间感觉刚学完还热和的设计模式有点白学了,是啊自己怎么没有注意到这些问题,所以我们得多问自己为什么,结合5W2H得思想。言归正传,让我们来探讨一下这些问题。一、什么是设计模式(Design Pattern)从字面上理解就是从生产经验和生活经验提炼出来的解决某类问题的体系。在计算机软件开发领域,是一套反复使用,多数人原创 2021-02-03 20:52:48 · 281 阅读 · 23 评论 -
设计模式六大原则
可维护、可扩展、可复用、灵活性好1.开放封闭原则开放封闭原则是说软件实体(类、模块、函数等等)应该是可扩展的,但是不能修改。开放封闭原则具有两个特征:“对于扩展是开放的,对于更改是封闭的”2.依赖倒装原则是说抽象不应该依赖细节,细节应该依赖于抽象。说白了就是针对接口编程,不要对实现编程A.高层模块不应该依赖低层模块。两个都应该依赖抽象B.抽象不应该依赖细节。细节应该依赖抽象3.里氏代换原则是说子类型必须能够替换掉他们的父类型只有当子类可以替换掉父类,软件单..原创 2021-01-29 19:45:11 · 935 阅读 · 29 评论 -
设计模式——迭代器模式
一、定义提供一种方法循序访问一个聚合对象中各个元素,而又不暴露该对象地内部表示和Foreach in 功能相同Aggregate类:聚焦抽象类提供创建迭代器地方法ConcreteAggregatelei:具体聚焦类,继承Aggregate类Iterator:迭代抽象类,用于定义得到开始对象,得到下一个对象,判断是否到结尾,当前对象等抽象方法,统一接口。ConcreteIterator类:具体的迭代器类,继承Iterator,实现其中的方法,可以在这儿修改实现不同的遍历方法。二原创 2021-01-21 16:25:44 · 209 阅读 · 17 评论 -
设计模式中的六种关系以及代码之间的对应
强弱关系:依赖<关联<聚合<组合<实现<继承一、依赖battle关联依赖定义对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。就好比动物依赖氧气和水。类图图形:箭头+虚线代码关系abstract class Animal{ public Metabolism (Oxygen oxygen,Water water) {}}关联定义..原创 2021-01-21 16:22:27 · 704 阅读 · 21 评论 -
设计模式——策略模式
一、定义它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的用户。二、特点封装了变化策略模式的Strategy类层次为Context定义了一系列可供重用的算法或行为。继承有助于析取出这些算法中的公共功能三、优缺点优点简化了单元测试,每个算法都有自己的类,,可以通过自己的接口单独测试减少了算法类和使用算法类之间的耦合,一个算法一个类缺点在基本的策略模式中,所具有具体实现的职责由客户端对象承担,并转给策略模式的Context对象。什么时原创 2021-01-07 14:43:48 · 181 阅读 · 19 评论