首页编程java编程java中什么是工厂模式,java简单工厂模式是什么

java中什么是工厂模式,java简单工厂模式是什么

编程之家 2023-10-13 97次浏览

大家好,今天给各位分享java中什么是工厂模式的一些知识,其中也会对java简单工厂模式是什么进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

java中什么是工厂模式,java简单工厂模式是什么

java简单工厂模式是什么

简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。

那么简单工厂模式是在什么场景下使用呢,下面就以本人的理解举例说明:

就拿登录功能来说,假如应用系统需要支持多种登录方式如:口令认证、域认证(口令认证通常是去数据库中验证用户,而域认证则是需要到微软的域中验证用户)。那么自然的做法就是建立一个各种登录方式都适用的接口,如下图所示:

java中什么是工厂模式,java简单工厂模式是什么

public interface Login{

//登录验证

public boolean verify(String name, String password);

java中什么是工厂模式,java简单工厂模式是什么

}

public class DomainLogin implements Login{

@Override

public boolean verify(String name, String password){

// TODO Auto-generated method stub

/**

*业务逻辑

*/

return true;

}

}

public class PasswordLogin implements Login{

@Override

public boolean verify(String name, String password){

// TODO Auto-generated method stub

/**

*业务逻辑

*/

return true;

}

}

我们还需要一个工厂类LoginManager,根据调用者不同的要求,创建出不同的登录对象并返回。而如果碰到不合法的要求,会返回一个Runtime异常。

public class LoginManager{

public static Login factory(String type){

if(type.equals("password")){

return new PasswordLogin();

}else if(type.equals("passcode")){

return new DomainLogin();

}else{

/**

*这里抛出一个自定义异常会更恰当

*/

throw new RuntimeException("没有找到登录类型");

}

}

}

测试类:

public class Test{

public static void main(String[] args){

// TODO Auto-generated method stub

String loginType="password";

String name="name";

String password="password";

Login login= LoginManager.factory(loginType);

boolean bool= login.verify(name, password);

if(bool){

/**

*业务逻辑

*/

} else{

/**

*业务逻辑

*/

}

}

}

简单工厂模式的结构如下图:

我们可以设想一下真实的场景,如果把上面的Test当做一个servlet的话,当客户端发起登录请求——>请求交给服务端的Servlet——>Servlet根据客户端传递的loginType调用工厂类LoginManager的factory()方法——>factory()方法根据参数loginType创建相应的登录验证类(DomainLogin或PasswordLogin)并返回——>登录验证类调用方法verify()验证用户名密码是否正确

假如不使用简单工厂模式则验证登录Servlet代码如下(假设Test为一个Servlet,变量loginType、name、password表示从客户端传递过来的参数):

public class Test{

public static void main(String[] args){

// TODO Auto-generated method stub

String loginType="password";

String name="name";

String password="password";

//处理口令认证

if(loginType.equals("password")){

PasswordLogin passwordLogin= new PasswordLogin();

boolean bool= passwordLogin.verify(name, password);

if(bool){

/**

*业务逻辑

*/

} else{

/**

*业务逻辑

*/

}

}

//处理域认证

else if(loginType.equals("passcode")){

DomainLogin domainLogin= new DomainLogin();

boolean bool= domainLogin.verify(name, password);

if(bool){

/**

*业务逻辑

*/

} else{

/**

*业务逻辑

*/

}

}else{

/**

*业务逻辑

*/

}

}

}

上面的代码会不会很蛋疼啊。。。呵呵

《JAVA与模式》一书中使用java.text.DataFormat类作为简单工厂模式的典型例子叙述。

简单工厂模式的优点

模式的核心是工厂类。这个类含有必要的逻辑判断,可以决定在什么时候创建哪一个登录验证类的实例,而调用者则可以免除直接创建对象的责任。简单工厂模式通过这种做法实现了对责任的分割,当系统引入新的登录方式的时候无需修改调用者。

简单工厂模式的缺点

这个工厂类集中了所以的创建逻辑,当有复杂的多层次等级结构时,所有的业务逻辑都在这个工厂类中实现。什么时候它不能工作了,整个系统都会受到影响。

Java程序设计中工厂设计模式思想是怎样的

工厂模式主要用一下几种形态:

1:简单工厂(Simple Factory)。

2:工厂方法(Factory Method)。

3:抽象工厂(Abstract Factory)。

简单工厂并不简单,它是整个模式的核心,一旦他出了问题,整个模式都将受影响而不能工作,为了降低风险和为日后的维护、扩展做准备,我们需要对它进行重构,引入工厂方法。工厂方法为工厂类定义了接口,用多态来削弱了工厂类的职能。

工厂方法和简单工厂的主要区别是,简单工厂是把创建产品的职能都放在一个类里面,而工厂方法则把不同的产品放在实现了工厂接口的不同工厂类里面,这样就算其中一个工厂类出了问题,其他工厂类也能正常工作,互相不受影响,以后增加新产品,也只需要新增一个实现工厂接口工厂类,就能达到,不用修改已有的代码。但工厂方法也有他局限的地方,那就是当面对的产品有复杂的等级结构的时候

抽象工厂的意图在于创建一系列互相关联或互相依赖的对象。

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.策略模式

这个模式是将行为的抽象,即当有几个类有相似的方法,将其中通用的部分都提取出来,从而使扩展更容易。

关于本次java中什么是工厂模式和java简单工厂模式是什么的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

java开发什么项目 java可以开发什么项目 什么是java类名 如何定义java的类名