Modo de criação - compreensão do modo de fábrica simples

Índice

1. Questões de desenvolvimento:

2. Modo de fábrica simples para otimização

3. Vantagens e desvantagens


1. Questões de desenvolvimento:

No processo de desenvolvimento, no caso de algumas regras de negócio, precisamos usar polimorfismo para separar diferentes situações e realizar o processamento da lógica de negócio.

Por exemplo: suponha que haja um módulo de análise de cenário,

Um entendimento simples é configurar um portfólio (como produtos de fundos), definir diferentes indicadores, executar fórmulas fixas e lógica de negócios relacionada, realizar análises e obter um resultado.

Neste momento, em geral, há apenas uma interface, mas para verificação de subclasse, use diferentes classes de implementação de acordo com diferentes indicadores, e muitos if e else devem ser adicionados

se método de otimização 1

Neste momento, você pode usar o padrão de fábrica simples para interface de nível de código

2. Modo de fábrica simples para otimização

//抽象接口:情景分析接口层
interface Analysis {
    public void calculate();
}

//实现层:指标a分析
class AnalysisIndexA implements Analysis {
    public AnalysisIndexA() {
        System.out.println("指标a分析!");
    }

    public void calculate() {
        System.out.println("指标a计算完成!");
    }
}

//实现层:指标b分析
class AnalysisIndexB implements Analysis {
    public AnalysisIndexB() {
        System.out.println("指标b分析!");
    }

    public void calculate() {
        System.out.println("指标b计算完成!");
    }
}

//工厂类
class analysisFactory {
    //静态工厂方法
    public static Analysis getanalysis(String type) {
        Analysis analysis = null;
        if (type.equalsIgnoreCase("indexA")) {
            analysis = new AnalysisIndexA();
            System.out.println("引用指标a计算对象!");
        }
        else if (type.equalsIgnoreCase("indexB")) {
            analysis = new AnalysisIndexA();
            System.out.println("引用指标b计算对象!");
        }
        return analysis;
    }
}

class Client {
    public static void main(String args[]) {
        Analysis analysis;
        //通过静态工厂方法引用不同指标对象
        analysis = analysisFactory.getanalysis("indexA"); 
        //开始进行指标计算
        analysis.calculate();
    }
}

3. Vantagens e desvantagens

 3.1. Principais vantagens

       As principais vantagens do padrão de fábrica simples são as seguintes:

       (1) A classe de fábrica contém a lógica de julgamento necessária, que pode decidir quando criar uma instância da classe de indicador. O cliente pode evitar a responsabilidade de criar diretamente o objeto da classe de indicador, mas apenas referenciar o objeto. O modo de fábrica simples realiza criação de objetos e separação de uso.

       (2) O cliente não precisa saber o nome da classe de produto específica criada, mas apenas os parâmetros correspondentes à classe de produto específica. Para alguns nomes de classes complexos, o modo de fábrica simples pode reduzir a memória do usuário para uma certa quantidade.

         2. Principais desvantagens

       As principais desvantagens do padrão de fábrica simples são as seguintes:

       (1) Como a classe fábrica concentra a lógica de criação de todos os produtos, a responsabilidade é muito pesada, caso não funcione normalmente, todo o sistema será afetado.

       (2) O uso do padrão de fábrica simples aumentará inevitavelmente o número de classes no sistema (introduzindo uma nova classe de fábrica), aumentando a complexidade e a dificuldade de compreensão do sistema.

       (3) É difícil expandir o sistema. Uma vez adicionado um novo produto, a lógica da fábrica deve ser modificada. Quando há muitos tipos de produtos, a lógica da fábrica pode ser muito complicada, o que não conduz à expansão do sistema e manutenção.

        3. Cenários aplicáveis

       Considere usar o padrão de fábrica simples nas seguintes situações:

       (1) A classe de fábrica é responsável por criar menos objetos. Como há menos objetos criados, a lógica de negócios no método de fábrica não será muito complicada.

       (2) O cliente conhece apenas os parâmetros passados ​​para a classe de fábrica e não se importa em como criar o objeto
 

Acho que você gosta

Origin blog.csdn.net/qq_44691484/article/details/130527032
Recomendado
Clasificación