设计模式学习
文章平均质量分 61
阅读设计模式相关书籍的一些知识总结
andQVQ
这个作者很懒,什么都没留下…
展开
-
终-模式总结
创造性模式创造型模式抽象了实例化的过程。它们帮助一个系统独立于如何创建、组合和表示他的那些对象。创造性模式都会将关于该系统使用哪些具体的类的信息封装起来。允许客户用结构和功能差别很大的”产品“对象配置一个系统。配置可以是静态的,即在编译时指定,也可以是动态的,就是运行时再指定。抽象工厂:提供一个创建一系列或相关依赖对象的接口,而无需指定它们具体的类。创造型模式隐藏了这些类的实例是如何被创造和放在一起,整个系统关于这些对象所知道的是由抽象类所定义的接口。这样,创造型模式在创建了什么,谁创建它,它是怎么原创 2021-11-10 15:24:59 · 49 阅读 · 0 评论 -
访问者模式
访问者模式定义UML用例原创 2021-11-10 11:48:30 · 355 阅读 · 0 评论 -
解释器模式
解释器模式定义给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单言语中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决问题。适合场景通常当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树时,可使用解释器。优点容易改变和扩展文法,因为该模式使用类来表示文法规则,可以使用继承来改变或扩展该文法,也较容易实现文法,因为定义抽象树中的各原创 2021-11-09 17:37:38 · 56 阅读 · 0 评论 -
享元模式、
文章目录享元模式定义优点:缺点:UML图用例享元模式定义运用共享技术有效的支持大量细粒度的对象。优点:享元模式可以避免大量非常相似类的开销。在程序设计中,有时需要生成大量细粒度的类实例来表示数据,如果能发现这些实例除了几个参数外基本上都是相同的,有时就能接受大幅度减少需要实例化的类的数量。如果能把那些参数移到类实例的外面,在方法调用时将它们传递进来,就可以通过共享大幅度的减少单个实例的数目。所以,如果一个应用程序使用了大量的对象,而大量的这些对象造成了很大的存储开销时就应该考虑使用;还要就是对象原创 2021-11-09 16:54:17 · 67 阅读 · 0 评论 -
中介者模式
中介者模式定义用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。UML图用例联合国安理会在各国间组织发言联合国机构类:Mediatorabstract class UnitedNations{ //声明 public abstract void Declare(string message, Country colleague);}国家类:Collegeabstract class Count原创 2021-11-09 16:27:33 · 47 阅读 · 0 评论 -
职责链模式
文章目录职责链模式定义UML图用例职责链模式定义UML图用例原创 2021-11-09 15:26:47 · 41 阅读 · 0 评论 -
命令模式、
文章目录命令模式定义UML图用例UML图命令模式定义将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。对于请求排队或记录请求日志,以及支持可撤销的操作等行为时,行为请求者和行为实现者的紧耦合时不太适合的。UML图用例烤串者类public class Barbecuer{ public void BakeMutton(){ System.out.println("烤羊肉串"); } public原创 2021-11-09 09:59:06 · 60 阅读 · 0 评论 -
桥接模式、
文章目录桥接模式定义UML图用例桥接模式定义UML图用例原创 2021-11-08 18:08:52 · 41 阅读 · 0 评论 -
单例模式、
文章目录单例模式定义UML图用例单例模式定义UML图用例原创 2021-11-08 17:39:56 · 37 阅读 · 0 评论 -
迭代器模式
文章目录迭代器模式定义UML图用例迭代器模式定义提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露对象的内部表示。为遍历不同的聚集结构提供如开始、下一个、是否结束、当前哪一项等统一的接口。总的来说,分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可以让外部代码透明的访问集合内部的数据。当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候;需要对聚集有多种方式遍历时。UML图用例迭代器抽象类:用于定义得到开始对象、得到下一个对象、判断是原创 2021-11-08 17:07:59 · 53 阅读 · 0 评论 -
组合模式、
文章目录组合模式定义UML图透明方式安全方式使用场景用例UML图组合模式定义将对象组合成树形结构以表示”部分-整体“的层析结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。UML图透明方式leaf中add和remove方法实现没有意义,但这样做可以消除叶节点和枝节点对象在抽象层次的区别,它们具备完全一致的接口。这种方式叫透明方式,在component中声明所有用来管理子对象的方法,在所有子类实现方法,这样叶节点和枝节点对于外界没有区别。安全方式安全方式,在component接口原创 2021-11-08 16:42:09 · 61 阅读 · 0 评论 -
备忘录模式
文章目录备忘录模式定义UML图用例UML图备忘录模式定义UML图用例UML图原创 2021-11-08 14:57:06 · 72 阅读 · 0 评论 -
适配器模式
文章目录适配器模式(对象适配器)定义UML图用例UML图适配器模式(对象适配器)定义将一个类的接口转化成客户希望的另外一个接口(也可以是具体的或抽象的类),Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。系统的数据和行为都正确,且双方都不太容易修改,并且接口也不符时,我们应该考虑使用适配器模式,目的是使控制范围之外的一个原有对象与某个接口匹配。匹配器模式主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。UML图用例球员类public abst原创 2021-10-26 17:10:37 · 60 阅读 · 0 评论 -
状态模式
文章目录状态模式定义好处UML图用例状态模式定义当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的问题就是当控制一个对象状态转换的条件表达式过于复杂时的情况。即把状态的判断逻辑转移到标识不同状态的一系列类当中。可以把复杂的判断逻辑简化。当一个对象的行为取决于他的状态,并且它必须在运行时刻根据状态改变它的行为。这个时候可以考虑使用状态模式。好处将与特定状态相关的行为放入一个对象中,并且将不同状态的行为分割开来(局部化),通过把各种状态转移逻辑分布到子类之间原创 2021-10-26 16:07:15 · 69 阅读 · 0 评论 -
抽象工厂模式
文章目录抽象工厂模式定义UML图用例UML图抽象工厂模式定义UML图用例UML图原创 2021-10-26 15:10:58 · 41 阅读 · 0 评论 -
观察者模式
文章目录观察者模式(发布-订阅模式)定义UML图用例UML图观察者模式(发布-订阅模式)定义定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。将一个系统分割成一系列相互协作的类有一个很不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。当一个对象的改变需要同时改变其他对象时,而且他不知道具体有多少对象需要改变时,应该考虑使用观察者模原创 2021-10-26 10:13:27 · 56 阅读 · 0 评论 -
建造者模式
文章目录建造者模式定义UML图用例UML图建造者模式定义将一个复杂对象的构建和他的表示分离,使得同样的构建过程可以创建不同的表示。主要用于创建一些复杂的对象,这些对象内部构件间的建造顺序是稳定的,但对象内部的构建通常面临着复杂的变化。如果使用建造者模式,用户就只需指定需要建造的类型就可以得到它们,而建造的过程和细节被隐藏了。UML图用例抽象的建造人类abstract class PersonBuilder{ protected Graphics g; protecte原创 2021-10-25 17:34:35 · 50 阅读 · 0 评论 -
外观模式
文章目录外观模式定义使用场景UML图用例UML图外观模式定义为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。体现了依赖倒转原则和迪米特原则。使用场景设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,为其开发一个外观类,以便新系统与其交互。UML图用例UML图.原创 2021-10-25 16:33:22 · 65 阅读 · 0 评论 -
模板方法模式
文章目录模板方法模式定义UML图用例UML图模板方法模式定义UML图用例UML图原创 2021-10-25 15:42:50 · 45 阅读 · 0 评论 -
原型模式
文章目录原型模式定义UML图用例——简历复印UML图原型模式定义用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。实现的效果就是从一个对象再创建另一个可定制的对象,而且不需要知道任何创建的细节。UML图用例——简历复印需要实现有一个简历功能,简历内容必须包括姓名,可以选择设置性别、年龄和工作经历。最终需要写出三份简历。UML图...原创 2021-10-25 14:56:05 · 59 阅读 · 0 评论 -
工厂模式
简单工厂模式原创 2021-10-22 17:43:09 · 59 阅读 · 0 评论 -
代理逻辑
文章目录代理逻辑——为他人做嫁衣定义用例UML图总结代理逻辑——为他人做嫁衣定义为其他对象提供一种代理以控制对这个对象的访问。用例需要实现一个代理送礼物系统,A想送礼物给B但不敢自己去,需要C代理送礼物,但礼物是A的。代理接口interface IGiveGift(){ void giveDolls(); void giveFlowers(); void giveChocolate();}被追求者类class Girl{ private name; public Strin原创 2021-10-22 16:16:00 · 131 阅读 · 0 评论 -
装饰模式
文章目录装饰模式——搭配选择定义用例UMI图总结装饰模式——搭配选择定义动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。用例要求要实现一个为人穿衣服的程序,有多种种类的衣服、裤子、袜子、领带等,不要求穿戴的顺序。使用装饰模式可以把所需的功能按正确的顺序串联起来进行控制。by the way,不用建造者的原因是建造者模式要求过程必须是稳定的,而这里穿戴的顺序是可以任意变化的。如果只有一个ConcreteComponent类而没有抽象的Component类,那么D原创 2021-10-22 16:14:34 · 51 阅读 · 0 评论 -
策略模式
文章目录策略模式——商场促销定义用例——简单工厂模式UML图——简单工厂模式用例——策略模式UML图——策略模式用例——策略与简单工厂结合UML图——策略与简单工厂结合总结策略模式——商场促销定义策略模式定义了一个算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化不会影响到使用算法的客户。用例——简单工厂模式需要实现一个商场收银系统,根据客户购买商品的单价和数量、优惠活动来收费。优惠活动包括正常收费、打折和满减活动。首先复习下用简单工厂实现是什么样呢?现金收费抽象类abstr原创 2021-10-22 16:13:16 · 71 阅读 · 0 评论 -
简单工厂模式
文章目录简单工厂模式——计算器定义用例UML图简单工厂模式——计算器定义工厂类实现创造实例的过程,可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无需知道其实现过程。用例需要实现一个计算器的功能,输入两个数,进行一次运算,输出结果。Operation运算类public class Operation{ private double _numberA = 0; private double _numberB原创 2021-10-22 16:09:02 · 44 阅读 · 0 评论 -
设计模式七大原则
文章目录闲话少许单一职责原则开放-封闭原则里氏代换原则依赖倒转原则闲话少许学习内容来自(大话设计模式 程杰)注意:代码规范。2. 命名一目了然,符合规定。3. 算法考虑时间效率4. 要照顾到实际使用过程中的特殊情况。5. 不同功能的模块要各自封装,例如业务逻辑和界面逻辑要分开。单一职责原则就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致错若的设计,当变化发生时,设计会遭受原创 2021-10-22 16:06:51 · 56 阅读 · 0 评论