这么详细的Java设计模式详解,还不收藏起来偷着乐?

设计模式是很多程序员总结出来的优秀实践。曾经在刚开始写项目的时候学习过设计模式,在开发过程中,也主动或者被动的使用过。现在写代码虽说不会特意明确在用哪种设计模式,但潜移默化的写出来公认的优秀实践代码,毕竟看的比较清爽。

为什么再看一遍设计模式,主要有几个原因:

第一,很多优秀的源码基本都使用了设计模式,明确设计模式能够更好的看源码。

第二,很多中间件设计理念也是基于设计模式的,还有其他的语言,都有自己的设计优秀实践。对于我来说,设计模式始于java,不止于java。

第三,有了这种规范,可以更好的和他人沟通,言简意赅。

这么详细的Java设计模式详解,还不收藏起来偷着乐?


设计模式的六大原则:

  • 单一职责原则,对扩展开放,对修改关闭。
  • 开闭原则,类的职责单一。
  • 里氏替换原则,子类可以透明替换父类。
  • 依赖倒置原则,面向接口编程。
  • 接口隔离原则,接口的职责要单一。
  • 迪米特法则,降低耦合。

六大原则是基础,所有的设计模式都是基于这六大设计原则进行设计编程的。

二十三种设计模式

创建型:

  • 单件模式(Singleton Pattern);
  • 保证一个类仅有一个实例,并提供一个访问它的全局访问点。
  • 减少了内存的开销,避免对资源的多重占用
  • 抽象工厂(Abstract Factory);
  • 抽象工厂模式主要设计产品组的概念,就是某一个工厂生产出配套的一系列产品。
这么详细的Java设计模式详解,还不收藏起来偷着乐?

  • 建造者模式(Builder);
  • 分离复杂对象的构建和表示。
  • 同样的构建过程可以创建不同的表示。
  • 工厂方法模式(Factory Method);
  • 任何可以产生对象的方法或类,都可以称之为工厂。
  • 工厂可以灵活的控制生产过程,定制权限、修饰、日志。
  • 原型模式(Prototype);
  • 原型模式用的比较少,用于创建重复对象。需要实现Cloneable 可以选择重写clone()方法。clone分为浅克隆和深克隆。

结构型:

  • 适配器模式(Adapter Pattern);
  • 让两个不兼容的东西可以一起工作。
  • 桥接模式(Bridge Pattern);
  • 用于抽象化和实现化的解耦。
  • 提高了代码的拓展性,并且可以实现代码的动态切换。
  • 装饰模式(Decorator Pattern);
  • 代理模式是原对象做不了那件事,必须让代理对象去做,主导侧重于代理对象
  • 组合模式(Composite Pattern);
  • 组合模式是将存在某种包含关系的数据组织在一起,典型的例子就是树状结构。
  • 外观模式(Facade Pattern);
  • 把内外关系封装起来,对外提供的接口封装到一个类里。由这一个类管理其他的类,对外提供一个统一的接口。这就是门面模式。
  • 享元模式(Flyweight Pattern);
  • 尽可能的让用户复用已经有的对象,从而避免造成反复创建对象的资源浪费。
  • 代理模式(Proxy Pattern);
  • 代理就是,一个对象辅助另一个对象去做某件事,同时还可以增加一点辅助功能。
这么详细的Java设计模式详解,还不收藏起来偷着乐?

行为型:

  • 模板方法(Template Method);
  • 一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
  • 命令模式(Command Pattern);
  • 将请求以命令的形式包裹在对象中,并传递给对象,调用对象寻找到处理该命令的合适的对象,并将该命令传递给相应的对象,该对象执行。
  • 迭代器模式(Iterator Pattern);
  • 提供一个方法,可以顺序访问一个对象内部的各个元素,不需要知道内部构造。现在基本很少自己实现迭代器了,基本成熟的框架或者强大的JDK都会给出访问的方法。
  • 进一步封装对象内部的结构,让行为和结构想耦合。
  • 观察者模式(Observer Pattern);
  • 多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
这么详细的Java设计模式详解,还不收藏起来偷着乐?

  • 解释器模式(Interpreter Pattern);
  • 构建一种翻译方式,将某种语言或描述翻译成我们很好理解的语言或者描述。
  • 中介者模式(Mediator Pattern);
  • 各部门内部之间的关系也很复杂时,想添加一个新的部门进来,又要和其他部门打交道。这是我们可以抽出一个部分,让它和其他的部门打交道。这种模式叫调停者。
  • 职责链模式(Chain of Responsibility Pattern);
  • 责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。
  • 备忘录模式(Memento Pattern);
  • 在不破坏对象本身结构的情况下,记录对象的一个状态,合适的时候可以恢复到这种状态。
  • 策略模式(Strategy Pattern);
  • 此接口强行对实现它的每个类的对象进行整体排序。
  • 实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。
  • 访问者模式(Visitor Pattern);
  • 在结构不变的情况下动态改变对于内部元素的动作。
  • 只适合结构固定的程序设计,当程序由增加删除组件的操作时,visitor设计模式是不适合的。所以Visitor会被使用在编译器和语法分析中。
  • 状态模式(State Pattern);
  • 一个对象有不同的状态,根据状态不同,可能有不同的行为。
这么详细的Java设计模式详解,还不收藏起来偷着乐?

这么详细的Java设计模式详解,还不收藏起来偷着乐?

小结

虽然设计模式在企业的正式开发中并不能全部用到。但是,代码的整洁与编程思路的清晰条理是一个程序员所必须的。

最后,把清华大佬的二十三种设计模式的详细讲解视频分享给大家,希望你们可以喜欢!

获取方式:

"


分享到:


相關文章: