开发中最常使用到那些设计模式?

本文介绍了软件开发中常见的设计模式,包括创建型、结构型和行为型模式,如工厂模式、单例模式、装饰者模式、观察者模式、适配器模式和策略模式等。这些模式用于提升代码的灵活性、可维护性和可复用性,例如Spring框架中的事件发布模型、AQS的模板设计模式等。同时,文章提及了设计模式遵循的原则,如开闭原则、单一职责原则等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 工厂设计模式和单例模式就不多说了,比较常见。
  • 装饰者模式,用以增强类中的某个方法,比如io流里的BufferedInputStream内置缓冲区来提高拷贝的效率
  • 观察者模式用来代码的解耦,这个开发用的还是挺多的,我很喜欢用spring提供的event事件发布模型,就是用@EventListener来监听事件的发布,实现代码的解耦,非常好用
  • 适配器模式adapter,有类的适配和对象的适配。开发中比如io流里的InputStreamReader(InputStream),可以把字节流转为字符流
    还有接口的适配,比如一个接口定义了很多方法,现在只要实现其中一个方法,就可以定义一个adapter实现这个接口,方法一般空实现即可,然后继承这个adapter类只实现你关注的那个方法。spring框架源码中有很多adapter类
  • 模板设计模式,这个开发中用的也很常见,封装不变的部分,扩展可变的部分。
    比如父类抽象类中定义事件处理总体流程,其中中间的关键步骤让子类根据比如上报事件类型的不同去重写,比如aqs框架就用到了模板设计模式(acquire/release,子类需要实现tryAcquire/tryRelease方法。
  • 代理模式,spring的基于JDK接口和cglib的动态代理
  • 策略模式:定义多个算法,这些算法实现同一个功能接口,并且可相互替换。如线程池里的四种拒绝策略。具体查看深入理解策略模式
    如果你仔细思考策略模式的结构和功能的话,就会发现:如果没有上下文,策略模式就回到了最基本的接口和实现了

设计模式的类型
总共有 23 种设计模式。这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模式(Behavioral Patterns)。当然,我们还会讨论另一类设计模式:J2EE 设计模式。

1. 创建型模式

这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。
工厂模式(Factory Pattern)
抽象工厂模式(Abstract Factory Pattern)
单例模式(Singleton Pattern)
建造者模式(Builder Pattern)
原型模式(Prototype Pattern)

2. 结构型模式

这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。
适配器模式(Adapter Pattern)
桥接模式(Bridge Pattern)
过滤器模式(Filter、Criteria Pattern)
组合模式(Composite Pattern)
装饰器模式(Decorator Pattern)
外观模式(Facade Pattern)
享元模式(Flyweight Pattern)
代理模式(Proxy Pattern)

3. 行为型模式

这些设计模式特别关注对象之间的通信。
责任链模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
解释器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
备忘录模式(Memento Pattern)
观察者模式(Observer Pattern)
状态模式(State Pattern)
空对象模式(Null Object Pattern)
策略模式(Strategy Pattern)
模板模式(Template Pattern)
访问者模式(Visitor Pattern)

4. J2EE 模式

这些设计模式特别关注表示层。这些模式是由 Sun Java Center 鉴定的。
MVC 模式(MVC Pattern)
业务代表模式(Business Delegate Pattern)
组合实体模式(Composite Entity Pattern)
数据访问对象模式(Data Access Object Pattern)
前端控制器模式(Front Controller Pattern)
拦截过滤器模式(Intercepting Filter Pattern)
服务定位器模式(Service Locator Pattern)
传输对象模式(Transfer Object Pattern)

普通的:设计模式有哪些,代码怎么实现?
有水平的:不仅会写出代码和关键点,说出作用,还能说出他的应用地方

让你创造个设计模式,你要考虑哪些?
开闭原则、单一职责原则、里式替换原则(里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现)
迪米特原则(迪米特法则不希望类之间建立直接的联系。设计模式的门面模式(Facade)和中介模式(Mediator),都是迪米特法则应用的例子。
优先考虑将一个类设置成不变类。
尽量降低一个类的访问权限。
谨慎使用Serializable。
尽量降低成员的访问权限)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值