Java设计模式

设计模式概述

设计模式(Design Pattern)是人们在长期的软件开发中对一些经验的总结,是对特点问题经过实践检验的特定解决方法。就像兵法中的三十六计,总结了多种对战争中某些特定的可能性计谋战术。设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术方案总结成设计模式,也会是其他开发者更加容易理解其设计思路。设计模式是可复用的面向对象软件的基础,帮助开发者做出有利于系统复用的选择,避免损害系统复用性的设计。简言之,设计模式可以帮助设计者更快、更好地完成系统设计。

        目前所说的设计模式通常是指GoF设计模式。GoF(Gang of Four,四人组)指的是Design Pattern: Elements of Reusable Object-Oriented Software 这本书的4位作者:Gamma、Helm、Johnson和Vlissides,书中总结了23种经典设计模式,因此也被称为GoF设计模式。

这23种设计模式有两种分类方式

 (1)根据目的划分,即根据设计模式是用于完成何种工作来划分。这种方式可分为创建型模式、结构型模式和行为型模式3种

  • 创建型模式:用于描述“如何创建对象”,其主要特点是“将对象的创建与使用分离”。
  • 结构型模式:用于描述如何将类或对象按某种布局组成更大的结构。
  • 行为型模式:用于描述类或对象之间如何相互协作,共同完成单个对象无法独立完成的任务,以及如何分配职责。

(2)根据作用范围划分,即根据设计模式主要作用于类上还是主要作用于对象上来划分。这种方式可分为类模式和对象模式两种。

  • 类模式:用于处理类与子类之间的关系,这些关系通过继承来建立,是静态的,在编译时刻便确定下来了。
  • 对象模式:用于处理对象之间的关系,这些关系可以通过组合或聚合来实现,在运行时是可以变化的,更具有动态性。
范围\目的创建型模式结构型模式行为型模式
类模式

工厂方法

(类)适配器

模板方法
对象模式

单例

原型

抽象工厂

建造者

代理

(对象)适配器

桥接

装饰

外观

享元

组合

策略

命令

职责链

状态

观察者

中介者

迭代器

访问者

备忘录

面向对象设计原则

1.单一职责原则

单一职责原则规定一个类应该有且仅有一个引起它变化的原因,简单来说,一个类应该只负责应该职责;否则,类应该被拆分。

2.开闭原则

开闭原则是面向对象设计模式中最基础的设计原则,开闭原则规定一个软件实体,如类、模块和函数,应该对拓展开发,对修改关闭(在不修改原有代码的情况下增加新的功能)。

3.里氏替换原则

里氏替换原则是面向对象设计的基本原则之一,是继承复用的基石。该原则规定所有引用基类的地方必须透明地使用其子类的对象。

4.依赖倒置原则

依赖倒置原则的核心思想是:依赖于约定而不依赖于具体实现,即面向接口编程。对象的依赖关系有3种传递依赖方式。(Spring中将依赖对象通过构造注入和setter注入)

  •  通过构造方法传递依赖对象,即构造方法的参数是需要依赖的接口类型
  • 通过setter方法传递依赖对象,即setter方法的参数是需要依赖的接口类型
  • 接口声明依赖,即接口方法的参数是需要依赖的接口类型

如果开闭原则是面向对象设计的目标,那么依赖倒置原则就是实现开闭原则的重要途径之一,他降低了客户与实现模块之间的耦合。

5.接口隔离原则

接口隔离原则要求尽量将庞大臃肿的接口拆分成更小、更具体的接口,让接口中只包含客户感兴趣的方法。

  • 单一职责原则注重的是职责,而接口隔离原则则注重接口依赖的隔离
  • 单一职责原则主要是约束类,它针对的是程序中的实现和细节;而接口隔离原则主要约束接口,主要针对抽象和程序整体框架的构建

6.迪米特法则

迪米特法则又称为最少知道原则,是指一个软件实体应当尽可能少地与其他实体发生相互作用。

7.合成复用原则

合成复用原则是指:尽量使用组件/聚合的方式,而不是继承关系达到软件复用的目的。

  • 14
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java设计模式是一套对代码设计经验的总结,被人们反复利用,并且很多人都熟知的代码设计方式。其中,单例模式是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这种模式有几个好处,比如可以节约系统资源,提高程序效率,以及提供一个全局访问点等。在实现单例模式时,可以采用饿汉式单例模式,即在类加载时创建一个对象,并通过私有构造器和静态方法来保证对象的唯一性。另外,工厂方法模式也是Java中常用的设计模式之一。在工厂方法模式中,可以定义一个工厂类,该类负责创建对象的实例,并将其封装在一个工厂方法中。通过这种方式,可以实现对象的创建与使用的分离,提高代码的灵活性和可维护性。总的来说,Java设计模式是一种用于解决特定问题的通用解决方案,可以提高代码的重用性、可读性和可扩展性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Java常用设计模式](https://blog.csdn.net/qq_33327680/article/details/123815614)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [JAVA中23种设计模式](https://blog.csdn.net/qw_0214/article/details/78878531)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值