05 2021 档案

摘要:行为型模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化,它是 GoF 设计模式中最为庞大的一类模式,包含以下 11 种:模板方法(Template Method)模式、策略(Strategy)模式、命令(Command)模式、职责链(Chain of Respo 阅读全文
posted @ 2021-05-24 14:35 苏先生139 阅读(229) 评论(0) 推荐(0) 编辑
摘要:在软件开发中,会遇到有些问题多次重复出现,而且有一定的相似性和规律性。如果将它们归纳成一种简单的语言,那么这些问题实例将是该语言的一些句子,这样就可以用“编译原理”中的解释器模式来实现了。虽然使用解释器模式的实例不是很多,但对于满足以上特点,且对运行效率要求不是很高的应用实例,如果用解释器模式来实现 阅读全文
posted @ 2021-05-24 14:32 苏先生139 阅读(75) 评论(0) 推荐(0) 编辑
摘要:每个人都有犯错误的时候,都希望有种“后悔药”能弥补自己的过失,让自己重新开始,但现实是残酷的。在计算机应用中,客户同样会常常犯错误,能否提供“后悔药”给他们呢?当然是可以的,而且是有必要的。这个功能由“备忘录模式”来实现。其实很多应用软件都提供了这项功能,如 Word、记事本、Photoshop、E 阅读全文
posted @ 2021-05-24 14:21 苏先生139 阅读(73) 评论(0) 推荐(0) 编辑
摘要:在现实生活中,有些集合对象存在多种不同的元素,且每种元素也存在多种不同的访问者和处理方式。例如,公园中存在多个景点,也存在多个游客,不同的游客对同一个景点的评价可能不同;医院医生开的处方单中包含多种药元素,査看它的划价员和药房工作人员对它的处理方式也不同,划价员根据处方单上面的药品名和数量进行划价, 阅读全文
posted @ 2021-05-24 14:17 苏先生139 阅读(95) 评论(0) 推荐(0) 编辑
摘要:在现实生活以及程序设计中,经常要访问一个聚合对象中的各个元素,如“数据结构”中的链表遍历,通常的做法是将链表的创建和遍历都放在同一个类中,但这种方式不利于程序的扩展,如果要更换遍历方法就必须修改程序源代码,这违背了 “开闭原则”。既然将遍历方法封装在聚合类中不可取,那么聚合类中不提供遍历方法,将遍历 阅读全文
posted @ 2021-05-24 14:13 苏先生139 阅读(69) 评论(0) 推荐(0) 编辑
摘要:在现实生活中,常常会出现好多对象之间存在复杂的交互关系,这种交互关系常常是“网状结构”,它要求每个对象都必须知道它需要交互的对象。例如,每个人必须记住他(她)所有朋友的电话;而且,朋友中如果有人的电话修改了,他(她)必须让其他所有的朋友一起修改,这叫作“牵一发而动全身”,非常复杂。如果把这种“网状结 阅读全文
posted @ 2021-05-24 14:07 苏先生139 阅读(84) 评论(0) 推荐(0) 编辑
摘要:在现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有,当我们开车到交叉路口时,遇到红灯会停,遇到绿灯会行。这样的例子还有很多,例如,股票价格与股民、微信公众号与微信用户、气象 阅读全文
posted @ 2021-05-24 14:03 苏先生139 阅读(209) 评论(0) 推荐(0) 编辑
摘要:在软件开发过程中,应用程序中的部分对象可能会根据不同的情况做出不同的行为,我们把这种对象称为有状态的对象,而把影响对象行为的一个或多个动态变化的属性称为状态。当有状态的对象与外部事件产生互动时,其内部状态就会发生改变,从而使其行为也发生改变。如人都有高兴和伤心的时候,不同的情绪有不同的行为,当然外界 阅读全文
posted @ 2021-05-24 13:58 苏先生139 阅读(70) 评论(0) 推荐(0) 编辑
摘要:在现实生活中,一个事件需要经过多个对象处理是很常见的场景。例如,采购审批流程、请假流程等。公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同,员工必须根据需要请假的天数去找不同的领导签名,也就是说员工必须记住每个领导的姓名、电话和地址等信息,这无疑增加了难度。在计 阅读全文
posted @ 2021-05-24 13:54 苏先生139 阅读(67) 评论(0) 推荐(0) 编辑
摘要:在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和 阅读全文
posted @ 2021-05-24 13:45 苏先生139 阅读(110) 评论(0) 推荐(0) 编辑
摘要:实验原理 1. 结构型模式的工作原理 结构型模式重点考虑类或对象的布局方式,其目的是将现有类或对象组成更大的结构。按照其显示方式的不同,结构型模式可分为类结构型模式和对象结构型模式。前者采用继承机制来组织接口和类,后者采用组合或聚合来组合对象。由于组合关系和或聚合关系比继承关系耦合度低,满足“合成复 阅读全文
posted @ 2021-05-24 13:40 苏先生139 阅读(138) 评论(0) 推荐(0) 编辑
摘要:在现实生活中,存在很多“部分-整体”的关系,例如,大学中的部门与学院、总公司中的部门与分公司、学习用品中的书与书包、生活用品中的衣服与衣柜、以及厨房中的锅碗瓢盆等。在软件开发中也是这样,例如,文件系统中的文件与文件夹、窗体程序中的简单控件与容器控件等。对这些简单对象与复合对象的处理,如果用组合模式来 阅读全文
posted @ 2021-05-24 13:37 苏先生139 阅读(140) 评论(0) 推荐(0) 编辑
摘要:在面向对象程序设计过程中,有时会面临要创建大量相同或相似对象实例的问题。创建那么多的对象将会耗费很多的系统资源,它是系统性能提高的一个瓶颈。例如,围棋和五子棋中的黑白棋子,图像中的坐标点或颜色,局域网中的路由器、交换机和集线器,教室里的桌子和凳子等。这些对象有很多相似的地方,如果能把它们相同的部分提 阅读全文
posted @ 2021-05-24 09:41 苏先生139 阅读(63) 评论(0) 推荐(0) 编辑
摘要:外观模式的定义与特点 外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。在日常编码工作中,我们都在有意无 阅读全文
posted @ 2021-05-24 08:48 苏先生139 阅读(68) 评论(0) 推荐(0) 编辑
摘要:在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。当然,这样的例子还有很多,如不同颜色和字体 阅读全文
posted @ 2021-05-22 11:28 苏先生139 阅读(330) 评论(0) 推荐(0) 编辑
摘要:<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> package testTraffic.utils; import org.dom4 阅读全文
posted @ 2021-05-22 11:15 苏先生139 阅读(1343) 评论(0) 推荐(0) 编辑
摘要:模式的定义与特点 适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少 阅读全文
posted @ 2021-05-21 17:52 苏先生139 阅读(1024) 评论(0) 推荐(0) 编辑
摘要:代理模式的定义与特点 代理模式的定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。代理模式的主要优点有: 代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用; 代理对象可以扩展目标对 阅读全文
posted @ 2021-05-21 17:47 苏先生139 阅读(56) 评论(0) 推荐(0) 编辑
摘要:实验原理 1. 创建型模式的工作原理 创建型模式隐藏了对象的创建细节,对象的创建由相关的工厂来完成,使用者不需要关注对象的创建细节,这样可以降低系统的耦合度。创建型模式共 5 种,它们分别是单例模式、原型模式、工厂方法模式、抽象工厂模式和建造者模式,其工作原理在各自的教程中也都有详细的介绍,每种模式 阅读全文
posted @ 2021-05-21 17:30 苏先生139 阅读(237) 评论(0) 推荐(0) 编辑
摘要:模式的定义与特点 建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。 阅读全文
posted @ 2021-05-21 17:24 苏先生139 阅读(56) 评论(0) 推荐(0) 编辑
摘要:模式的定义与特点 抽象工厂(AbstractFactory)模式的定义:是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级 阅读全文
posted @ 2021-05-21 17:02 苏先生139 阅读(245) 评论(0) 推荐(0) 编辑
摘要:优点: 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。 灵活性增强,对于新产品的创建,只需多写一个相应的工厂类。 典型的解耦框架。高层模块只需要知道产品的抽象类,无须关心其他实现类,满足迪米特法则、依赖倒置原则和里氏替换原则。 缺点: 类的个数容易过多,增加复杂度 增加 阅读全文
posted @ 2021-05-21 16:56 苏先生139 阅读(67) 评论(0) 推荐(0) 编辑
摘要:原型模式的定义与特点 原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复 阅读全文
posted @ 2021-05-21 16:46 苏先生139 阅读(116) 评论(0) 推荐(0) 编辑
摘要:合成复用原则的定义 合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)。它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。如 阅读全文
posted @ 2021-05-21 16:42 苏先生139 阅读(272) 评论(0) 推荐(0) 编辑
摘要:迪米特法则的定义是:只与你的直接朋友交谈,不跟“陌生人”说话(Talk only to your immediate friends and not to strangers)。其含义是:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合 阅读全文
posted @ 2021-05-21 16:39 苏先生139 阅读(146) 评论(0) 推荐(0) 编辑
摘要:接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。 口隔离原则和单一职责都是为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想,但两者是不同的: 单一职责原则注重的是 阅读全文
posted @ 2021-05-21 16:38 苏先生139 阅读(119) 评论(0) 推荐(0) 编辑
摘要:单一职责原则的优点 单一职责原则的核心就是控制类的粒度大小、将对象解耦、提高其内聚性。如果遵循单一职责原则将有以下优点。 降低类的复杂度。一个类只负责一项职责,其逻辑肯定要比负责多项职责简单得多。 提高类的可读性。复杂性降低,自然其可读性会提高。 提高系统的可维护性。可读性提高,那自然更容易维护了。 阅读全文
posted @ 2021-05-21 16:36 苏先生139 阅读(57) 评论(0) 推荐(0) 编辑
摘要:依赖、倒置原则的作用 依赖倒置原则的主要作用如下。 依赖倒置原则可以降低类间的耦合性。 依赖倒置原则可以提高系统的稳定性。 依赖倒置原则可以减少并行开发引起的风险。 依赖倒置原则可以提高代码的可读性和可维护性。 依赖倒置原则的实现方法 依赖倒置原则的目的是通过要面向接口的编程来降低类间的耦合性,所以 阅读全文
posted @ 2021-05-21 16:35 苏先生139 阅读(165) 评论(0) 推荐(0) 编辑
摘要:里氏替换原则的作用 里氏替换原则的主要作用如下。 里氏替换原则是实现开闭原则的重要方式之一。 它克服了继承中重写父类造成的可复用性变差的缺点。 它是动作正确性的保证。即类的扩展不会给已有的系统引入新的错误,降低了代码出错的可能性。 加强程序的健壮性,同时变更时可以做到非常好的兼容性,提高程序的维护性 阅读全文
posted @ 2021-05-21 16:33 苏先生139 阅读(367) 评论(0) 推荐(0) 编辑
摘要:开闭原则的作用 开闭原则是面向对象程序设计的终极目标,它使软件实体拥有一定的适应性和灵活性的同时具备稳定性和延续性。具体来说,其作用如下。 1. 对软件测试的影响 软件遵守开闭原则的话,软件测试时只需要对扩展的代码进行测试就可以了,因为原有的测试代码仍然能够正常运行。 2. 可以提高代码的可复用性 阅读全文
posted @ 2021-05-21 16:30 苏先生139 阅读(71) 评论(0) 推荐(0) 编辑
摘要:Swing 是一个为Java设计的GUI工具包。 Swing是JAVA基础类的一部分。 Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。 Swing提供许多比AWT更好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT。它们是JFC 阅读全文
posted @ 2021-05-21 11:23 苏先生139 阅读(515) 评论(0) 推荐(0) 编辑
摘要:1. 什么是Redis Redis是一个开源的内存数据库,它以键值对的形式存储数据。由于数据存储在内存中,因此Redis的速度很快,但是每次重启Redis服务时,其中的数据也会丢失,因此,Redis也提供了持久化存储机制,将数据以某种形式保存在文件中,每次重启时,可以自动从文件加载数据到内存当中。 阅读全文
posted @ 2021-05-19 17:03 苏先生139 阅读(691) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示