java工厂模式详解_清华大神详解,这么详细的Java设计模式不收藏可惜了

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

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

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

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

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

dcb66b9faa6cd4428110791cc0dcb4c8.png

设计模式的六大原则:

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

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

二十三种设计模式

创建型:

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

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

结构型:

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

cea22051e511c99dacadc0706526ff81.png

行为型:

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

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

113197a15259ef550b90b14bfd14ccbe.png

16a6b056c361a86af98798ab505e7259.png

小结

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

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

获取方式:

1.转发关注小编;

2.私信小编“学习“来拿走吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值