Java 中的设计模式

1.设计模式概念

1.1 什么地方可以用到设计模式

面向对象(OO)=>功能模块[设计模式+算法(数据结构)]=>框架[使用多种设计模式]=>架构[服务器集群]
复制代码

 

1.2 使用设计模式的好处

  • 使用设计模式,软件具有很好的可扩展性(可以增加新的功能)

  • 使用开发模式,具有很好的维护性(可读性、规范性)

1.3 设计模式的目的

  • 设计模式是为了让程序,具有更好的代码重复性、可读性(编程规范性)、可扩展性(可维护性)、可靠性、是程序呈现高内聚,低耦合的特征。(模块内部逻辑关系非常紧密,模块与模块之间的关系非常的松散)

  • 分享金句:"懂了设计模式,你就懂了面向对象分析和面向对象设计(OOA/OOD)的精要"。

  • C++老手与 C++新手的区别就是,前者手背上有很多的伤疤。

2.设计模式的七大原则

  • 设计模式原则,其实就是程序员在编译时,应当遵守的原则,也就是各种设计模式的基础(即:设计模式为什么这样设计的依据)

设计模式常用的七大原则:

  • 单一职责原则

  • 接口隔离原则

  • 依赖倒转(倒置)原则

  • 里氏替换原则

  • 开闭原则

  • 迪米特原则

  • 合成复用原则(在一些地方不写这个原则)

2.1 单一职责原则

  • 对于类来说,即一个类应该只负责一项职责。如果 A 类负责两个不同的职责:职责 1、职责 2。当职责 1 发生变化而改变 A 时,可能会对职责 2 造成影响使职责 2 运行错误,所以需要将类 A 的粒度分解为 A1、A2。

  • 如果再类中没有满足单一职责原则,在一个类的方法中遵守单一职责原则也是可以的(交通工具)

  • 标准的单一职责原则,是在类的级别上进行拆分,而不是方法级别。

  • 通常情况下,我们要遵守单一职责原则,只有当逻辑足够简单,才可以在代码级别违反单一职责原则;只有类中的方法数量足够少,可以在方法级别保持单一职责原则。

  • 优秀的代码中使用类来区分多个分支,而不使用 if...else if()....else(耦合度高)

2.2 接口隔离原则

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

  • 处理方式:将接口 Interface 拆分为独立的几个接口,类 A 与类 C 分别于他们需要的接口建立依赖关系。这就是使用的接口隔离原则。

没有使用接口隔离原则时的实现类图:(此时 A、C 要实现接口里的所有方法)

使用接口隔离原则时的实现类图:(此时将接口进行了拆分,A 此时只需要实现它要使用的方法对应的接口即可,而不用将接口中的方法全部实现)

2.3 依赖倒转(倒置)原则

  • 在 Java 中,抽象是指接口或者抽象类,细节是指具体的实现类。

  • 高层模块不应该依赖低层模块,二者都应该依赖其抽象(接口、抽象类)。

  • 抽象类不应该依赖细节,细节应该依赖抽象类。

  • 依赖倒倒转(倒置)的中心思想是面向接口编程。

依赖倒转原则是基于这样的设计理念:

  • 相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比细节为基础的架构要稳定的多。

  • 使用接口或者抽象类的目的是制定好规范,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java是一种强大的编程语言,它提供了许多不同类型的设计模式来帮助开发人员编写更加模块化、可扩展和易于维护的代码。 以下是一些Java常用的设计模式: 1. 单例模式(Singleton Pattern):保证一个类只有一个实例,并提供一个全局访问点。 2. 工厂模式(Factory Pattern):使用工厂方法来创建对象,而不是直接调用构造函数。 3. 抽象工厂模式(Abstract Factory Pattern):提供一个接口来创建一系列相关或依赖对象的工厂,而不需要指定它们的具体类。 4. 观察者模式(Observer Pattern):定义对象之间的一对多的依赖关系,当一个对象改变状态时,它的所有依赖对象都会收到通知并自动更新。 5. 适配器模式(Adapter Pattern):将一个类的接口转换成另一个客户端所期望的接口,从而使得原本不兼容的类能够协同工作。 6. 模板方法模式(Template Method Pattern):定义一个算法的骨架,将一些步骤延迟到子类实现,使得子类可以改变算法的某些特定步骤,而不改变算法的整体结构。 7. 装饰器模式(Decorator Pattern):动态地给一个对象添加一些额外的职责,同时又不改变其原有的结构。 8. 迭代器模式(Iterator Pattern):提供一种方法访问一个容器对象各个元素,而又不暴露该对象的内部细节。 9. 策略模式(Strategy Pattern):定义一系列的算法,将它们封装起来,并使它们可以互相替换,从而使得算法的变化独立于使用它们的客户端。 10. 命令模式(Command Pattern):将一个请求封装成一个对象,从而使得可以用不同的请求对客户端进行参数化,并支持可撤销的操作。 以上只是一些Java常用的设计模式,不过Java还有许多其他类型的设计模式可以用来帮助解决各种问题。在实际开发,根据具体的需求和情况选择合适的设计模式非常重要。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值