Red de conocimiento informático - Aprendizaje de programación - ¿Qué es el patrón de fábrica simple de Java?

¿Qué es el patrón de fábrica simple de Java?

Patrón de fábrica simple: El patrón de fábrica simple es un patrón de creación de clases, también conocido como patrón del método de fábrica estática. El patrón de fábrica simple utiliza un objeto de fábrica para decidir qué instancia de la clase de producto crear.

Entonces, ¿a qué escenarios se aplica el patrón de fábrica simple? El siguiente es un ejemplo de lo que entiendo:

Tome la función de inicio de sesión como ejemplo si el sistema de la aplicación necesita soporte. múltiples métodos de inicio de sesión, como: verificación de contraseña, verificación de dominio (la verificación de contraseña generalmente implica verificar al usuario en la base de datos, mientras que la verificación de dominio requiere verificar si el usuario ha ingresado al dominio de Microsoft). Entonces, la forma natural es crear una interfaz que sea aplicable a varios métodos de inicio de sesión, como se muestra a continuación:

interfaz pública Inicio de sesión {

//verificación de inicio de sesión

verificación booleana pública (nombre de cadena, contraseña de cadena);

}

la clase pública DomainLogin implementa el inicio de sesión {

@Override

booleana pública verificar (nombre de cadena, contraseña de cadena) {

// TODO genera automáticamente códigos auxiliares de método

/**

* Lógica empresarial

*/

Devuelve verdadero

}

}

la clase pública PasswordLogin implementa el inicio de sesión {

@Override

public boolean verificar(Nombre de cadena, Contraseña de cadena) {

// TODO Código auxiliar de método generado automáticamente

/**

* Lógica de Negocio

*/

return true;

}

}

También necesitamos una fábrica clase, Es decir, LoginManager, que puede crear diferentes objetos de inicio de sesión y devolverlos de acuerdo con las diferentes necesidades de la persona que llama. Si se encuentra una solicitud ilegal, se devolverá una excepción de tiempo de ejecución.

Clase pública LoginManager {

Fábrica de inicio de sesión estática pública (tipo de cadena){

if(type.equals("contraseña")){

devolver nuevo inicio de sesión de contraseña();

}else if(type.equals("código de acceso")){

devolver nuevo inicio de sesión de dominio();

}else{

/**

* Es más apropiado lanzar una excepción personalizada aquí.

Apropiado

*/

throw new RuntimeException("Tipo de inicio de sesión no encontrado");

}

}

}

}

Clase de prueba:

prueba de clase pública {

public static void main(String[] args) {

// TODO Código auxiliar de método generado automáticamente

String loginType = "contraseña";

String nombre = "nombre";

String contraseña = " contraseña";

Iniciar sesión login = LoginManager.factory(loginType);

boolean bool = login.verify(nombre, contraseña);

if (bool) {

p>

/**

* Lógica empresarial

*/

} más {

/**

* Lógica empresarial

*/

}

La estructura del patrón de fábrica simple es la siguiente:

Podemos imaginar un escenario del mundo real, si la prueba anterior se considera como un Servlet, cuando el cliente inicia una solicitud de inicio de sesión --> la solicitud se entrega al Servlet en el lado del servidor --> el Servlet pasa la solicitud de inicio de sesión al cliente. El servlet llama al método factory() de la clase de fábrica LoginManager según el tipo de inicio de sesión pasado por el cliente --> El método Factory() crea la clase de verificación de inicio de sesión correspondiente (DomainLogin o PasswordLogin) según el parámetro loginType y devuelve: > identidad de inicio de sesión La clase de verificación llama al método verificar() para verificar si el nombre de usuario y la contraseña son correctos

Si no utiliza el modo de fábrica simple, el código del servlet de autenticación de inicio de sesión es el siguiente (suponiendo que Test es un Servlet, las variables loginType, nombre y contraseña representan los valores de los parámetros del cliente pasados ​​al final):

public class Test {

public static void main(String[] args) {

// TODO genera automáticamente un código auxiliar de método

String loginType = "contraseña";

String name = "nombre ";

String contraseña = "contraseña";

// Manejo de la verificación de contraseña

if( loginType.equals("contraseña")){

Inicio de sesión de contraseña inicio de sesión de contraseña = nuevo inicio de sesión de contraseña();

booleano bool = inicio de sesión de contraseña. verificar(nombre, contraseña);

if (bool) {

/**

* Lógica empresarial

*/

} else {

/**

* Lógica empresarial

*/

}