Patrón de método de fábrica
Patrón de fábrica simple, patrón de fábrica
abstracto , fábrica
abstracta, implementación simple del grupo de conexiones de base de datos
1. Definición:
Se refiere a la definición de una interfaz para crear objetos, pero la clase que implementa esta interfaz decide qué clase instanciar, y el método de fábrica coloca la instanciación de la clase en la subclase.
2. Ventajas:
Si la lógica de creación de cada objeto es diferente, las responsabilidades de la fábrica serán cada vez más y no será fácil de mantener El patrón del método de fábrica tiene una fábrica dedicada para cada objeto.
3. Los cuatro roles del patrón del método de fábrica
Fábrica abstracta : el núcleo del patrón del método de fábrica, en el que cualquier fábrica que cree objetos debe implementar esta interfaz.
Fábrica de hormigón : la clase de fábrica de hormigón que implementa la fábrica abstracta, contiene la lógica para crear objetos y la aplicación la llama para crear objetos.
Objeto abstracto : la superclase del objeto creado por el patrón del método de fábrica
Objeto concreto : Implementa la interfaz definida por el rol del objeto abstracto, y un objeto es creado por una fábrica de concreto.
4. Implementación simple del patrón del método de fábrica
public interface IFactory {//抽象工厂
IProduct makeProduct();
}
public class FactoryA implements IFactory {//创建A产品的工厂
@Override
public IProduct makeProduct() {
return new ProductA();
}
}
public class FactoryB implements IFactory {//创建B产品的工厂
@Override
public IProduct makeProduct() {
// TODO Auto-generated method stub
return new ProductB();
}
}
public interface IProduct {//抽象对象
void doSomeThing();
}
public class ProductA implements IProduct {//具体对象A
@Override
public void doSomeThing() {
// TODO Auto-generated method stub
System.out.println("A");
}
}
public class ProductB implements IProduct {//具体对象B
@Override
public void doSomeThing() {
// TODO Auto-generated method stub
System.out.println("B");
}
}
public class Client {
public static void main(String[] args) {
IFactory factoryA = new FactoryA();//创建A工厂创建
IFactory factoryB = new FactoryB();//创建B工厂创建
IProduct productA = factoryA.makeProduct();//A工厂创建A对象
IProduct productB = factoryB.makeProduct();//B工厂创建B对象
}
}