Java中常用的设计模式都有哪些?请详细说明一下工厂模式。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中常用的设计模式都有哪些?请详细说明一下工厂模式。相关的知识,希望对你有一定的参考价值。

1.单例模式(有的书上说叫单态模式其实都一样)
该模式主要目的是使内存中保持1个对象
2.工厂模式
该模式主要功能是统一提供实例对象的引用。看下面的例子:
public class Factory
public ClassesDao getClassesDao()
ClassesDao cd = new ClassesDaoImpl();
return cd;


interface ClassesDao
public String getClassesName();

class ClassesDaoImpl implements ClassesDao
public String getClassesName()
System.out.println("A班");


class test

public static void main(String[] args)
Factory f = new Factory();
f.getClassesDao().getClassesName();


这个是最简单的例子了,就是通过工厂方法通过接口获取对象的引用
3.建造模式
该模式其实就是说,一个对象的组成可能有很多其他的对象一起组成的,比如说,一个对象的实现非常复杂,有很多的属性,而这些属性又是其他对象的引用,可能这些对象的引用又包括很多的对象引用。封装这些复杂性,就可以使用建造模式。
4.门面模式
这个模式个人感觉像是Service层的一个翻版。比如Dao我们定义了很多持久化方法,我们通过Service层将Dao的原子方法组成业务逻辑,再通过方法向上层提供服务。门面模式道理其实是一样的。
5.策略模式
这个模式是将行为的抽象,即当有几个类有相似的方法,将其中通用的部分都提取出来,从而使扩展更容易。
参考技术A 一共23种设计模式!
引用《软件秘笈-设计模式那点事》书籍:
按照目的来分,设计模式可以分为创建型模式、结构型模式和行为型模式。
创建型模式用来处理对象的创建过程;结构型模式用来处理类或者对象的组合;行为型模式用来对类或对象怎样交互和怎样分配职责进行描述。
创建型模式用来处理对象的创建过程,主要包含以下5种设计模式:

工厂方法模式(Factory
Method
Pattern)

抽象工厂模式(Abstract
Factory
Pattern)

建造者模式(Builder
Pattern)

原型模式(Prototype
Pattern)

单例模式(Singleton
Pattern)
结构型模式用来处理类或者对象的组合,主要包含以下7种设计模式:

适配器模式(Adapter
Pattern)

桥接模式(Bridge
Pattern)

组合模式(Composite
Pattern)

装饰者模式(Decorator
Pattern)

外观模式(Facade
Pattern)

享元模式(Flyweight
Pattern)

代理模式(Proxy
Pattern)
行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种设计模式:

责任链模式(Chain
of
Responsibility
Pattern)

命令模式(Command
Pattern)

解释器模式(Interpreter
Pattern)

迭代器模式(Iterator
Pattern)

中介者模式(Mediator
Pattern)

备忘录模式(Memento
Pattern)

观察者模式(Observer
Pattern)

状态模式(State
Pattern)

策略模式(Strategy
Pattern)

模板方法模式(Template
Method
Pattern)

访问者模式(Visitor
Pattern)
抽象工厂模式(Abstract
Factory
Pattern)提供了一个接口,用于创建相关或者依赖对象的家族,而不需要指定具体实现类。
抽象工厂模式允许客户使用抽象接口来创建一组相关的产品,客户类和工厂类分开,客户需要任何产品的时候,只需要向工厂请求即可,客户无须修改就可以获得新产品。这样一来,客户就从具体产品中解耦。
详情请参考书籍《软件秘笈:设计模式那点事》,里面讲解的23中设计模式例子很生动,容易理解,还有JDK中设计模式应用情况,看了收获挺大的!好东西大家一起分享!
祝你早日学会设计模式!

以上是关于Java中常用的设计模式都有哪些?请详细说明一下工厂模式。的主要内容,如果未能解决你的问题,请参考以下文章

你常用的Java工具库有哪些

全文检索工具都有哪些?

请问java开发工具都有哪些

nand flash X16和X8在硬件和软件设计上都有哪些差异,请帮忙说明一些,越详细越好。

云驻共创 JAVA常用的开发工具有哪些?

云驻共创 JAVA常用的开发工具有哪些?