Java设计模式
文章平均质量分 80
主要对JAVA设计模式进行分析
一名技术极客
在代码的海洋里,我是一名不断航行的探索者。热爱Java,热衷于深入挖掘技术细节,享受解决复杂问题的成就感。这里是我的CSDN博客,记录我在编程路上的学习笔记、项目实践和对新技术的思考。
作为一名拥有多年开发经验的Java程序员,我深知学习过程中的困难与挑战。因此,我的博客会尽量用简明的语言去阐释复杂的概念,分享实用的编程技巧,以及那些在我工作过程中积累的宝贵经验。无论是初学者还是资深开发者,我都希望这里的内容能对您有所帮助。
在这个快速变化的技术世界,让我们一起保持好奇心,不断学习,共同进步。欢迎留言讨论,期待与您一起探讨编程之美!
展开
-
34-Java传输对象模式 ( Transfer Object Pattern )
传输对象模式(Transfer Object Pattern)用于从客户端向服务器一次性传递带有多个属性的数据传输对象也被称为数值对象,没有任何行为传输对象是一个具有 getter/setter 方法的简单的 POJO 类,它是可序列化的,所以它可以通过网络传输服务器端的业务类通常从数据库读取数据,然后填充 POJO,并把它发送到客户端或按值传递它对于客户端,传输对象是只读的客户端可以创建自己的传输对象,并把它传递给服务器,以便一次性更新数据库中的数值原创 2024-03-21 09:14:13 · 547 阅读 · 0 评论 -
33-Java服务定位器模式 (Service Locator Pattern)
服务定位器模式(Service Locator Pattern)用于想使用 JNDI 查询定位各种服务的时候考虑到为某个服务查找 JNDI 的代价很高,服务定位器模式充分利用了缓存技术在首次请求某个服务时,服务定位器在 JNDI 中查找服务,并缓存该服务对象当再次请求相同的服务时,服务定位器会在它的缓存中查找,这样可以在很大程度上提高应用程序的性能原创 2024-03-20 09:53:49 · 843 阅读 · 0 评论 -
32-Java拦截过滤器模式 ( Intercepting Filter )
拦截过滤器模式(Intercepting Filter Pattern)用于对应用程序的请求或响应做一些预处理/后处理定义过滤器,并在把请求传给实际目标应用程序之前应用在请求上过滤器可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序原创 2024-03-19 09:17:56 · 397 阅读 · 0 评论 -
31-Java前端控制器模式(Front Controller Pattern)
前端控制器模式(Front Controller Pattern)是用来提供一个集中的请求处理机制,所有的请求都将由一个单一的处理程序处理该处理程序可以做认证/授权/记录日志,或者跟踪请求,然后把请求传给相应的处理程序原创 2024-03-19 08:48:54 · 986 阅读 · 0 评论 -
30-Java数据访问对象模式 ( Data Access Object )
数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来原创 2024-03-15 10:27:05 · 434 阅读 · 0 评论 -
29-Java组合实体模式 (Composite Entity Pattern)
组合实体模式(Composite Entity Pattern)用在 EJB 持久化机制中一个组合实体是一个 EJB 实体 bean,代表了对象的图解当更新一个组合实体时,内部依赖对象 beans 会自动更新,因为它们是由 EJB 实体 bean 管理的原创 2024-03-15 10:14:06 · 362 阅读 · 0 评论 -
28-Java业务代表模式(Business Delegate Pattern)
业务代表模式(Business Delegate Pattern)用于对表示层和业务层解耦业务代表模式用来减少通信或对表示层代码中的业务层代码的远程查询功能在业务层中我们有以下实体:客户端(Client) - 表示层代码可以是 JSP、servlet 或 UI java 代码业务代表(Business Delegate) - 一个为客户端实体提供的入口类,它提供了对业务服务方法的访问查询服务(LookUp Service) - 查找服务对象负责获取相关的业务实现,并提供业务对象对业务代表对象原创 2024-03-14 10:59:41 · 430 阅读 · 0 评论 -
27-Java MVC 模式
MVC模式代表 Model-View-Controller(模型-视图-控制器) 模式MVC模式用于应用程序的分层开发Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO 它也可以带有逻辑,在数据变化时更新控制器View(视图) - 视图代表模型包含的数据的可视化Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开原创 2024-03-13 14:36:58 · 574 阅读 · 0 评论 -
26-Java访问者模式 ( Visitor Pattern )
1. 意图主要将数据结构与数据操作分离2. 主要解决稳定的数据结构和易变的操作耦合问题。3. 何时使用需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作”污染”这些对象的类,使用访问者模式将这些封装到类中4. 如何解决在被访问的类里面加一个对外提供接待访问者的接口5. 关键代码在数据基础类里面有一个方法接受访问者,将自身引用传入访问者6. 应用实例您在朋友家做客,您是访问者,朋友接受您的访问,您通过朋友的描述,然后对朋友的描述做出一个判断,这就是访问者模式7. 优点。原创 2024-03-13 14:21:26 · 1243 阅读 · 0 评论 -
25-Java模板模式 ( Template Pattern )
1. 意图定义一个操作中的算法的骨架,而将一些步骤延迟到子类中模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤2. 主要解决一些方法通用,却在每一个子类都重新写了这一方法3. 何时使用有一些通用的方法4. 如何解决将这些通用算法抽象出来5. 关键代码在抽象类实现,其他步骤在子类实现6. 应用实例在造房子的时候,地基、走线、水管都一样,只有在建筑的后期才有加壁橱加栅栏等差异;西游记里面菩萨定好的81难,这就是一个顶层的逻辑骨架;原创 2024-03-12 08:58:29 · 560 阅读 · 0 评论 -
24-Java策略模式 ( Strategy Pattern )
1. 意图定义一个操作中的算法的骨架,而将一些步骤延迟到子类中模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤2. 主要解决一些方法通用,却在每一个子类都重新写了这一方法3. 何时使用有一些通用的方法4. 如何解决将这些通用算法抽象出来5. 关键代码在抽象类实现,其他步骤在子类实现6. 应用实例在造房子的时候,地基、走线、水管都一样,只有在建筑的后期才有加壁橱加栅栏等差异;西游记里面菩萨定好的81难,这就是一个顶层的逻辑骨架;原创 2024-03-12 08:52:50 · 420 阅读 · 0 评论 -
23-Java空对象模式 ( Null Object Pattern )
编译运行以上 Java 范例,输出结果如下。原创 2024-03-11 18:07:52 · 372 阅读 · 0 评论 -
22-Java状态模式 ( State Pattern )
1. 意图允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类2. 主要解决对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为3. 何时使用代码中包含大量与对象状态有关的条件语句4. 如何解决将各种具体的状态类抽象出来5. 关键代码通常命令模式的接口中只有一个方法。而状态模式的接口中有一个或者多个方法而且,状态模式的实现类的方法,一般返回值,或者是改变实例变量的值也就是说,状态模式一般和对象的状态有关。实现类的方法有不同的功能,覆盖接口中的方法。原创 2024-03-11 17:52:26 · 789 阅读 · 0 评论 -
21-Java观察者模式 ( Observer Pattern )
1. 意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。2. 主要解决一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作3. 何时使用一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知,进行广播通知4. 如何解决使用面向对象技术,可以将这种依赖关系弱化5. 关键代码在抽象类里有一个 ArrayList 存放观察者们6. 应用实例拍卖的时候,拍卖师观察最高标价,然后通知给其他竞价者竞价;原创 2024-03-08 17:21:02 · 1144 阅读 · 0 评论 -
20-Java备忘录模式 ( Memento Pattern )
1. 意图在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态2. 主要解决所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态3. 何时使用很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态,使得他有”后悔药”可吃4. 如何解决通过一个备忘录类专门存储对象状态5. 关键代码客户不与备忘录类耦合,与备忘录管理类耦合。原创 2024-03-08 16:59:02 · 603 阅读 · 0 评论 -
19-Java中介者模式 ( Mediator Pattern )
1. 意图用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互2. 主要解决对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理3. 何时使用多个类相互耦合,形成了网状结构4. 如何解决将上述网状结构分离为星型结构5. 关键代码对象Colleague 之间的通信封装到一个类中单独处理6. 应用实例。原创 2024-03-07 17:29:46 · 659 阅读 · 0 评论 -
18-Java迭代器模式 ( Iterator Pattern )
1. 意图提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示2. 主要解决不同的方式来遍历整个整合对象3. 何时使用遍历一个聚合对象4. 如何解决把在元素之间游走的责任交给迭代器,而不是聚合对象5. 关键代码定义接口:hasNext, next6. 应用实例JAVA 中的 iterator7. 优点它支持以不同的方式遍历一个聚合对象;迭代器简化了聚合类;在同一个聚合上可以有多个遍历;在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码;原创 2024-03-07 17:13:04 · 505 阅读 · 0 评论 -
17-Java解释器模式 ( Interpreter Pattern )
1. 意图给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子2. 主要解决对于一些固定文法构建一个解释句子的解释器3. 何时使用如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题4. 如何解决构件语法树,定义终结符与非终结符5. 关键代码构件环境类,包含解释器之外的一些全局信息,一般是 HashMap6. 应用实例编译器、运算表达式计算7. 优点。原创 2024-03-06 14:51:02 · 507 阅读 · 0 评论 -
16-Java命令模式 ( Command Pattern )
1. 意图将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化2. 主要解决在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合的设计就不太合适3. 何时使用在某些场合,比如要对行为进行”记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将”行为请求者”与”行为实现者”解耦?将一组行为抽象为对象,可以实现二者之间的松耦合4. 如何解决。原创 2024-03-06 14:34:11 · 1342 阅读 · 0 评论 -
15-Java责任链模式 ( Chain of Responsibility)
1. 意图避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止2. 主要解决职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了3. 何时使用在处理消息的时候以过滤很多道4. 如何解决拦截的类都实现统一接口5. 关键代码。原创 2024-03-04 15:06:31 · 999 阅读 · 0 评论 -
14-Java动态代理模式
动态代理提供了一种灵活且非侵入式的方式,可以对对象的行为进行定制和扩展。它在代码重用、解耦和业务逻辑分离、性能优化以及系统架构中起到了重要的作用。增强对象的功能:通过动态代理,可以在不修改原始对象的情况下,对其方法进行增强或添加额外的行为。可以在方法执行前后进行一些操作,比如日志记录、性能监测、事务管理等。解耦和业务逻辑分离:动态代理可以将对象的特定操作从业务逻辑中解耦,使得代码更加模块化和可维护。代理对象可以负责处理一些通用的横切关注点,而业务对象可以专注于核心业务逻辑。实现懒加载。原创 2024-03-05 08:30:00 · 353 阅读 · 0 评论 -
13-Java代理模式 ( Proxy Pattern )
1. 意图为其他对象提供一种代理以控制对这个对象的访问2. 主要解决在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层3. 何时使用想在访问一个类时做一些控制4. 如何解决增加中间层5. 关键代码实现与被代理类组合6. 应用实例买火车票不一定在火车站买,也可以去代售点;原创 2024-03-05 08:30:00 · 260 阅读 · 0 评论 -
12-Java享元模式 ( Flyweight Pattern )
1. 意图运用共享技术有效地支持大量细粒度的对象2. 主要解决在有大量对象时,有可能会造成内存溢出,我们把其中共同的部分抽象出来,如果有相同的业务请求,直接返回在内存中已有的对象,避免重新创建3. 何时使用系统中有大量对象;这些对象消耗大量内存;这些对象的状态大部分可以外部化;这些对象可以按照内蕴状态分为很多组,当把外蕴对象从对象中剔除出来时,每一组对象都可以用一个对象来代替;系统不依赖于这些对象身份,这些对象是不可分辨的;4. 如何解决。原创 2024-03-04 11:44:16 · 729 阅读 · 0 评论 -
11-Java外观模式/门面模式 ( Facade Pattern )
1. 意图为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用2. 主要解决降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口3. 何时使用客户端不需要知道系统内部的复杂联系,整个系统只需提供一个”接待员”即可;定义系统的入口;4. 如何解决客户端不与系统耦合,外观类与系统耦合5. 关键代码在客户端和复杂系统之间再加一层,这一层将调用顺序、依赖关系等处理好6. 应用实例。原创 2024-03-04 11:23:08 · 605 阅读 · 0 评论 -
10-Java装饰器模式 ( Decorator Pattern )
1. 意图动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活2. 主要解决一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀3. 何时使用在不想增加很多子类的情况下扩展类4. 如何解决将具体功能职责划分,同时继承装饰者模式5. 关键代码Component类充当抽象角色,不应该具体实现;修饰类引用和继承Component类,具体扩展类重写父类方法;6. 应用实例。原创 2024-03-01 17:33:47 · 687 阅读 · 0 评论 -
09-Java组合模式 ( Composite Pattern )
1. 意图将对象组合成树形结构以表示”部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性2. 主要解决它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦3. 何时使用您想表示对象的部分-整体层次结构(树形结构);希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象;4. 如何解决树枝和叶子实现统一接口,树枝内部组合该接口5. 关键代码。原创 2024-03-01 16:35:28 · 640 阅读 · 0 评论 -
08-Java过滤器模式 ( Filter Pattern )
过滤器模式(Filter Pattern)或允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。过滤器模式(Filter Pattern) 又称 标准模式(Criteria Pattern)编译运行以上 Java 范例,输出结果如下。原创 2024-02-07 11:23:02 · 868 阅读 · 0 评论 -
07-Java桥接模式 ( Bridge Pattern )
1. 意图将抽象部分与实现部分分离,使它们都可以独立的变化2. 主要解决在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活3. 何时使用实现系统可能有多个角度分类,每一种角度都可能变化4. 如何解决把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合5. 关键代码抽象类依赖实现类6. 应用实例猪八戒从天蓬元帅转世投胎到猪,转世投胎的机制将尘世划分为两个等级,即:灵魂和肉体,前者相当于抽象化,后者相当于实现化;原创 2024-02-07 10:46:33 · 1223 阅读 · 0 评论 -
06-Java适配器模式 ( Adapter Pattern )
1. 意图将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作2. 主要解决主要解决在软件系统中,常常要将一些”现存的对象”放到新的环境中,而新环境要求的接口是现对象不能满足的3. 何时使用系统需要使用现有的类,而此类的接口不符合系统的需要;想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口;原创 2024-02-05 17:11:21 · 1402 阅读 · 0 评论 -
05-Java原型模式 ( Prototype Pattern )
1. 意图用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象2. 主要解决在运行期建立和删除原型3. 何时使用当一个系统应该独立于它的产品创建,构成和表示时;当要实例化的类是在运行时刻指定时,例如,通过动态装载;为了避免创建一个与产品类层次平行的工厂类层次时;当一个类的实例只能有几个不同状态组合中的一种时建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些;4. 如何解决利用已有的一个原型对象,快速地生成和原型对象一样的实例5. 关键代码实现克隆操作。原创 2024-02-05 12:05:40 · 1333 阅读 · 0 评论 -
04-Java建造者模式 ( Builder Pattern )
1. 意图将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示2. 主要解决主要解决在软件系统中,有时候面临着”一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定3. 何时使用一些基本部件不会变,而其组合经常变化的时候4. 如何解决将变与不变分离开5. 关键代码建造者:创建和提供实例导演:管理建造出来的实例的依赖关系6. 应用实例。原创 2024-02-04 22:22:53 · 1020 阅读 · 0 评论 -
03-Java单例模式 ( Singleton Pattern )
1. 意图保证一个类仅有一个实例,并提供一个访问它的全局访问点2. 主要解决一个全局使用的类频繁地创建与销毁3. 何时使用当您想控制实例数目,节省系统资源的时候4. 如何解决判断系统是否已经有这个单例,如果有则返回,如果没有则创建5. 关键代码构造函数是私有的6. 应用实例一个党只能有一个主席;Windows是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行;原创 2024-02-04 17:34:14 · 798 阅读 · 0 评论 -
02-Java抽象工厂模式 ( Abstract Factory Pattern )
1. 意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类2. 主要解决主要解决接口选择的问题3. 何时使用系统的产品有多于一个的产品族,而系统只消费其中某一族的产品4. 如何解决在一个产品族里面,定义多个产品5. 关键代码在一个工厂里聚合多个同类产品6. 应用实例。原创 2024-02-02 17:07:20 · 1456 阅读 · 0 评论 -
01-Java工厂模式 ( Factory Pattern )
1. 意图定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行2. 主要解决主要解决接口选择的问题3. 何时使用我们明确地计划不同条件下创建不同实例时4. 如何解决让其子类实现工厂接口,返回的也是一个抽象的产品5. 关键代码创建过程在其子类执行6. 应用实例您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的具体实现;Hibernate换数据库只需换方言和驱动就可以;7. 优点。原创 2024-02-02 15:06:59 · 703 阅读 · 0 评论 -
Java设计模式 – 四大类型
根据书Design Patterns – Elements of Reusable Object-Oriented Software(中文译名:设计模式 – 可复用的面向对象软件元素) 中和 J2EE 所提到的,总共有 23 +8 种设计模式。这些模式可以分为四大类:创建型模式(Creational Patterns)、结构型模式(Structural。这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这些设计模式特别关注对象之间的通信。原创 2024-02-02 14:13:34 · 1120 阅读 · 0 评论 -
设计模式 --- 工厂方法模式
文章目录介绍定义主要作用解决的问题模式原理UML类图模式组成使用步骤实例讲解实例概况使用步骤优点缺点应用场景总结介绍定义工厂方法模式,又称工厂模式、多态工厂模式和虚拟构造器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。主要作用将类的实例化(具体产品的创建)延迟到工厂类的子类(具体工厂)中完成,即由子类来决定应该实例化(创建)哪一个类。解决的问题工厂...原创 2020-04-21 22:21:42 · 377 阅读 · 0 评论 -
设计模式 --- 简单工厂模式
定义定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类在简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此简单工厂模式又被成为静态工厂方法(Static Factory Method)需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无需知道其实现过程此模式并不属于23种设计模式,但它却是工厂模式的基础简单工厂模式的...原创 2020-04-18 23:06:38 · 155 阅读 · 0 评论 -
浅谈Java设计模式六大原则
单一职责原则翻译过来可理解为一个类只负责一项原则简单来说就是一个类只负责一个功能点或者模块,例如平时我们使用的UserController 以及 UserServices,它们仅负责和我们的User相关的业务。里氏代换原则...原创 2020-04-17 22:38:38 · 179 阅读 · 2 评论 -
生产者消费者模式思想 阻塞队列 DelayQueue 模拟订单过期功能
DelayQueue是一个支持延时获取元素的无界阻塞队列。队列使用 PriorityQueue 来实现。 队列中的元素必须实现 Delayed接口,在创建元素时可以指定多久才能从队列中 获取当前元素。只有在延迟期满时才能从队列中提取元素。1.将订单推入队列中/** *类说明:将订单推入队列 */public class PutOrder implements Runnable {...原创 2020-04-01 21:43:03 · 460 阅读 · 2 评论 -
Java设计模式之模板方法模式(TemplateMethod)
模板设计模式在书中定义: 定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤。 通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。网上找到的一个模...原创 2020-03-21 22:19:28 · 250 阅读 · 0 评论