iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >Java中GOF23的作用是什么
  • 367
分享到

Java中GOF23的作用是什么

2023-06-20 18:06:19 367人浏览 安东尼
摘要

Java中GoF23的作用是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、什么是设计模式设计模式(Design pattern) 是解决软件开发某些特定问题而

Java中GoF23的作用是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

一、什么是设计模式

设计模式(Design pattern) 是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路。通过设计模式可以帮助我们增强代码的可重用性、可扩充性、 可维护性、灵活性好。我们使用设计模式最终的目的是实现代码的高内聚和低耦合。

二、设计模式的三大分类及关键点

Java中GOF23的作用是什么

1、创建型模式

对象实例化的模式,创建型模式用于解耦对象的实例化过程。

单例模式:某个类智能有一个实例,提供一个全局的访问点。工厂模式:一个工厂类根据传入的参量决定创建出哪一种产品类的实例。抽象工厂模式:创建相关或依赖对象的家族,而无需明确指定具体类。建造者模式:封装一个复杂对象的创建过程,并可以按步骤构造。原型模式:通过复制现有的实例来创建新的实例。 2、结构型模式

把类或对象结合在一起形成一个更大的结构。

装饰器模式:动态的给对象添加新的功能。代理模式:为其它对象提供一个代理以便控制这个对象的访问。桥接模式:将抽象部分和它的实现部分分离,使它们都可以独立的变化。适配器模式:将一个类的方法接口转换成客户希望的另一个接口。组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。外观模式:对外提供一个统一的方法,来访问子系统中的一群接口。享元模式:通过共享技术来有效的支持大量细粒度的对象。 3、行为型模式

类和对象如何交互,及划分责任和算法

策略模式:定义一系列算法,把他们封装起来,并且使它们可以相互替换。模板模式:定义一个算法结构,而将一些步骤延迟到子类实现。命令模式:将命令请求封装为一个对象,使得可以用不同的请求来进行参数化。迭代器模式:一种遍历访问聚合对象中各个元素的方法,不暴露该对象的内部结构。观察者模式:对象间的一对多的依赖关系。仲裁者模式:用一个中介对象来封装一系列的对象交互。备忘录模式:在不破坏封装的前提下,保持对象的内部状态。解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器。状态模式:允许一个对象在其对象内部状态改变时改变它的行为。责任链模式:将请求的发送者和接收者解耦,使的多个对象都有处理这个请求的机会。访问者模式:不改变数据结构的前提下,增加作用于一组对象元素的新功能。

三、设计模式的几种原则

1、单一职责原则

对于一个类,只有一个引起该类变化的原因;该类的职责是唯一的,且这个职责是唯一引起其他类变化的原因。

2、接口隔离原则

客户端不应该依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上。

3、依赖倒转原则

依赖倒转原则是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

4、里式代换原则

任何基类可以出现的地方,子类一定可以出现。里氏代换原则是继承复用的基石,只有当衍生类可以替换基类,软件单位的功能不受影响时,基类才能真正的被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原则的补充。实现开闭原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

5、开闭原则

(1)对于扩展是开放的(Open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们可以改变模块的功能。

(2)对于修改是关闭的(Closed for modification)。对模块行为进行扩展时,不必改动模块的源代码或者二进制代码。模块的二进制可执行版本,无论是可链接的库、DLL或者.EXE文件,都无需改动。

6、迪米特法则

迪米特法则又叫做最少知识原则,就是说一个对象应当对其它对象又尽可能少的了解,不和陌生人说话。

7、合成复用原则

合成复用原则要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。如果要使用继承关系,则必须严格遵循里氏替换原则。合成复用原则同里氏替换原则相辅相成的,两者都是开闭原则的具体实现规范。

设计模式七大原则总结(超详细)

四、设计模式关系

Java中GOF23的作用是什么

五、设计模式感想

一共有23种设计模式,可以说都是为了提高代码的可读性、可扩展性、可复用性、类的可替换性、组件化、可移植性等等特性。通过接口、抽象类、继承、实现、委托、抽象、面向接口编程、多态、重载、重写等方式使得代码的这些特性得以彰显,可以说只有深刻的理解了这些概念背后的哲学思想才能更好的理解设计模式。在设计模式中有很多思想,比如可以使用委托的不要使用继承、开闭原则,面向扩展开放,面向修改关闭,里式代换原则,父类一定能被子类代替并使用,反置则不然,面向接口编程,功能层次和实现层次分离(桥接模式)、高内聚低耦合等思想,这些思想都是宝贵的,正是因为这样的思想的存在才使得代码的更新换代的时候能够尽可能少的甚至不用修改之前的代码,直接加入新的内容。提高软件的开发周期,便于维护和升级,便于查找和纠错,易于扩展和使用。

同样的设计模式主要分为三大类,创建型、行为型、结构型。我们可以简单的这样分类,只不过这样的分类似乎并不准确,不能一语道出所有的本质,设计模式是相互关联的,有的设计模式内部其实是使用了别的设计模式作为支撑的,但是大体上这样的一种划分便于我们去记忆,仅此而已。

六、设计模式回顾

从迭代器开始,我们将类中数据结构的遍历和类的功能实现分离出来,本质上使用了工厂模式;

其次我们学习了适配器模式,它将不同的接口进行适配,从而便于版本的兼容性以及其他功能;

然后我们学习了模板方法,使用模板面向抽象编程,便于新的子类的实现和管理;

之后学习了工厂模式,其实借用了模板模式来创建产品,是一种非常重要用处很广的一种方法;

然后我们学习了单例模式,有懒汉式、饿汉式等,生成关于某个类全局唯一的对象,注意多线程的影响;

之后是原型模式,用来复制复杂的对象,使用了clone方法,然后是builder模式,用一个新的类对已有的抽象接口进行整合和编程,从而构建出我们想要的东西;

然后是抽象工厂模式,使用了工厂模式,组合模式等模式,面向抽象编程,将抽象零件组装成抽象产品,便于具体工厂的创建,提高了代码的组件化和复用性;

然后是桥接模式,将类的功能层次和实现层次分割开来,便于对应的扩展和使用;

然后是策略模式,可以整体的替换策略,使用也很广泛;然后是组合模式,保证了同根同源,通过委托添加自己构成递归,树形结构,将具有树形特点的对象组合起来;

然后是装饰器模式,和组合模式的结构类似,同样是递归结构,从而可以不断的装饰,增加新的功能,很好用;

接着是visitor访问者模式,通过在类外访问类中的数据结构从而得到想要的结果,便于程序的可扩展性和组件化;

接着是责任链模式,推卸责任,根据问题的大小来考虑自己释放处理,本质是链表,便于职责分明;

然后是外观模式,通过整合各个类之间的调用关系,组建成了统一的接口(api),便于外部类的调用;

接着是仲裁者模式,将很多类之间互相关联的关系交给仲裁者处理,省去了各个类之间的嵌套和调动,有利于高内聚和低耦合,思路清晰,便于扩展;

然后是观察者模式,通过互相委托从而能够在被观察的类发生改变的时候得到相应的改变的信息并且处理;

然后是备忘录模式,通过在某一时刻的状态保存下来,便于恢复,在游戏中使用的比较多;

然后是状态模式,将状态当做类,从而职责分明,解除了很多繁琐的if和else这些分支逻辑,便于扩展;

然后是享元模式,轻量级对象,通过共用不变对象来实现;

然后是代理模式,懒加载真正的服务器,加快访问速度,代理是帮助服务器代理的;

然后是命令模式,将命令当做类,通过保存一些列命令,从而能够随时执行这些命令,需要清除命令的本质就是一些操作和数据;

最后是解释器模式,利用编程原理的方法,来更高层次的封装代码,将自己开发的java代码当做编译系统,从而不用改变java代码只修改更高语言层次的代码就能实现不同的功能。 

看完上述内容,你们掌握Java中GOF23的作用是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: Java中GOF23的作用是什么

本文链接: https://www.lsjlt.com/news/299050.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中GOF23的作用是什么
    Java中GOF23的作用是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、什么是设计模式设计模式(Design pattern) 是解决软件开发某些特定问题而...
    99+
    2023-06-20
  • java中CopyOnWriteArrayList的作用是什么
    java中CopyOnWriteArrayList的作用是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java可以用来干什么Java主要应用于:1. web开发;2....
    99+
    2023-06-14
  • java中Synchronized的作用是什么
    今天就跟大家聊聊有关java中Synchronized的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用...
    99+
    2023-06-14
  • java中Supplier的作用是什么
    java中Supplier的作用是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示...
    99+
    2023-06-14
  • java中ordinal的作用是什么
    今天就跟大家聊聊有关java中ordinal的作用是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程...
    99+
    2023-06-14
  • java中iterable的作用是什么
    这篇文章将为大家详细讲解有关java中iterable的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java可以用来干什么Java主要应用于:1. web开发;2. Androi...
    99+
    2023-06-14
  • java中DelayQueue的作用是什么
    这篇文章给大家介绍java中DelayQueue的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程...
    99+
    2023-06-14
  • java中wait的作用是什么
    本篇文章给大家分享的是有关java中wait的作用是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java可以用来干什么Java主要应用于:1. web开发;2. Andr...
    99+
    2023-06-14
  • java中continue的作用是什么
    在Java中,continue语句用于跳过循环中的当前迭代,并继续下一次迭代。当continue语句被执行时,循环会立即跳转到下一次...
    99+
    2024-03-05
    java
  • java中mapper的作用是什么
    在Java中,Mapper是一种用于将输入数据映射到输出数据的对象或组件。它通常用于将数据库中的数据映射为Java对象,或者将Jav...
    99+
    2023-08-08
    java
  • Java中model.addattribute()的作用是什么
    在Java中,model.addAttribute()方法用于向视图层传递数据。它将一个属性添加到模型中,以便在视图中使用。这个方法...
    99+
    2023-09-27
    Java
  • Java中true的作用是什么
    在Java中,true是一个布尔类型的值,表示逻辑上的真。它常用于条件判断和控制语句中,用于判断某个条件是否满足。当条件为真时,程序...
    99+
    2023-10-25
    Java
  • java中Comparators的作用是什么
    java中Comparators的作用是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据...
    99+
    2023-06-14
  • Java中CompletableFuture的作用是什么
    这篇文章给大家介绍Java中CompletableFuture的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。创建CompletableFuture对象。以下四个静态方法用来为一段异步执行的代码创建Compl...
    99+
    2023-06-17
  • java中jackson的作用是什么
    在Java中,Jackson是一个用于JSON处理的库,主要用于将Java对象与JSON数据进行互相转换。它提供了一组用于序列化(将...
    99+
    2024-03-05
    java jackson
  • java中string.split的作用是什么
    在Java中,String.split()方法用于将一个字符串按照指定的分隔符分割成一个字符串数组。例如,可以使用String.sp...
    99+
    2024-03-05
    java
  • Java中bigdecimal.add的作用是什么
    在Java中,BigDecimal是用来表示精确的十进制数的类,它提供了add()方法用于将两个BigDecimal对象相加并返回结...
    99+
    2024-03-07
    Java
  • java中thumbnails的作用是什么
    在Java中,thumbnails通常用于创建图像的缩略图。缩略图是原始图像的小版本,通常用于在网页或移动应用中显示,以减少加载时间...
    99+
    2024-03-13
    java
  • java中abstract的作用是什么
    Java中的abstract关键字用于定义抽象类和抽象方法。1. 抽象类:使用abstract关键字修饰的类被称为抽象类。抽象类不能...
    99+
    2023-09-23
    java
  • Java中Serverlet的作用是什么
    Servlet是Java编写的一种服务器端程序,主要用于处理客户端请求和生成响应。Servlet的作用包括:1. 处理HTTP请求:...
    99+
    2023-09-25
    Java Serverlet
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作