Modo de agente y modo de método de fábrica

1. Modelo de agencia

Ejemplos de patrones de diseño basados ​​en grandes charlas

Código sin proxy:

//SchoolGirl,被追求者类
public class SchoolGirl {
    
    
    private String name;

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }  
}
//追求者类
public class Pursuit {
    
    
    SchoolGirl schoolGirl;

    public Pursuit(SchoolGirl schoolGirl) {
    
    
        this.schoolGirl = schoolGirl;
    }
    public void GiveDolls() {
    
    
        System.out.println(schoolGirl.getName() + "送你洋娃娃");
    }
    public void GiveFlowers() {
    
    
        System.out.println(schoolGirl.getName() + "送你鲜花");
    }
    public void GiveChocolate() {
    
    
        System.out.println(schoolGirl.getName() + "送你巧克力");
    }  
}

//测试类写法
public class Test {
    
    
    public static void main(String[] args) {
    
    
        SchoolGirl schoolGirl = new SchoolGirl();
        schoolGirl.setName("大话设计模式");
        Pursuit pursuit = new Pursuit(schoolGirl);//此时被追求者根本不认识追求者
        pursuit.GiveDolls();
        pursuit.GiveChocolate();
        pursuit.GiveFlowers();
        System.out.println("测试一结束");
    }
}

Solo código proxy

//定义送礼物的接口
public interface IGirlGift {
    
    
    void GiveDolls();
    void GiveFlowers();
    void GiveChocolate();
}
//被追求者类
public class SchoolGirl {
    
    
    private String name;

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }   
}
//让代理和追求者都实现这个接口
public class Pursuit implements IGirlGift {
    
    
    SchoolGirl schoolGirl;

    public Pursuit(SchoolGirl schoolGirl) {
    
    
        this.schoolGirl = schoolGirl;
    }
    public void GiveDolls() {
    
    
        System.out.println(schoolGirl.getName() + "送你洋娃娃");
    }
    public void GiveFlowers() {
    
    
        System.out.println(schoolGirl.getName() + "送你鲜花");
    }
    public void GiveChocolate() {
    
    
        System.out.println(schoolGirl.getName() + "送你巧克力");
    }   
}
//代理者
public class Proxy implements IGirlGift {
    
    
    Pursuit pursuit;

    public Proxy(SchoolGirl schoolGirl) {
    
    
        pursuit = new Pursuit(schoolGirl);
    }
    public void GiveDolls() {
    
    
        pursuit.GiveDolls();
    }
    public void GiveFlowers() {
    
    
        pursuit.GiveFlowers();
    }
    public void GiveChocolate() {
    
    
        pursuit.GiveChocolate();
    }
}
//测试类
public class Test {
    
    
    public static void main(String[] args) {
    
    
        SchoolGirl schoolGirl = new SchoolGirl();
        schoolGirl.setName("大话设计模式");
        Proxy proxy = new Proxy(schoolGirl);
        proxy.GiveChocolate();
        proxy.GiveDolls();
        proxy.GiveFlowers();
        System.out.println("简单代理实现");
    }
}

2. Patrón de método de fábrica

  • Patrón de fábrica simple
    • Ventajas: La clase de fábrica contiene los juicios lógicos necesarios, y las clases relacionadas se instancian dinámicamente de acuerdo con las condiciones de selección del cliente. Para el cliente, se elimina la dependencia de productos específicos.
    • Desventajas: El cliente necesita decidir qué fábrica instanciar para implementar la clase de cálculo El problema del juicio de selección aún existe El método de fábrica transfiere el juicio lógico interno de la fábrica simple al código del cliente para su ejecución. Cuando necesite agregar funciones, originalmente debe cambiar la clase de fábrica, pero ahora debe modificar el cliente.

Pasos de uso:

Paso 1: Cree una clase de fábrica abstracta y defina la interfaz pública de la fábrica de concreto;
Paso 2: Cree una clase de producto abstracto y defina la interfaz pública del producto de concreto;
Paso 3: Cree una clase de producto concreto (herede la clase de producto abstracto ) & definir el producto específico producido;
Paso 4: Cree una clase de fábrica de concreto (herede la clase de fábrica abstracta) y defina el método para crear las instancias de producto de concreto correspondientes;
Paso 5: El mundo exterior crea instancias de diferentes ** clases de producto de concreto por llamando a los métodos de la clase de fábrica de hormigón

Supongo que te gusta

Origin blog.csdn.net/qq_37771811/article/details/103811005
Recomendado
Clasificación