Design padrão padrão de fábrica abstrata, padrão adaptador, modelo de protótipo implementado em projetos práticos

Nota: Devido ao projeto fonte da empresa envolve confidencialidade, upload pessoal uma demo para sua referência e estudo.

Fonte Endereço: https://gitee.com/Leelinkai/demo

1. Resumo do projeto

Nome do projeto: sistema comerciante arquivamento

Descrição do projeto: uma variedade de produtos para empresas atendem aos requisitos ( micro-channel , Alipay , CUP ) , tais como a função de arquivamento, ou seja, cada empresas de suporte ao produto para criar , modificar e consulta funções.

2, como fazer a programação com padrões de design 

2.1 Abstract Factory

Primeiro, leia a descrição do item, podemos ver que o apoio micro-canal para criar, modificar e consulta, Alipay empatia. Neste ponto, você pode pensar em fazer qualquer coisa como pacote. Mas também precisamos pensar sobre que tipo de padrões de projeto para uso com o projeto real. Eu também incidir sobre a marca e outras palavras e produtos também comunicadas, haverá um follow-up para se juntar ao QQ e outros produtos. Aqui, certamente estamos olhando para criar um padrão de design, de modo que o padrão de fábrica abstrata surgiu.

Desde a decisão de usar o padrão de fábrica abstrata, mas o quadro de como projetar a nossa interface para catalogá-lo? Primeiro quero apresentar dois conceitos: família de produtos e hierarquia de produtos .

  • família de produtos: refere-se à produção da mesma planta, localizado em produtos diferentes estrutura hierárquica de um grupo de produtos
  • hierarquia do produto: estrutura de herança do produto.

 

Posso esperar na figura, um e produtos micro-canal são micro-channel para criar, modificar e inquéritos micro-canal micro-canais, hierarquia de produtos para uma consulta são consulta micro-channel, a consulta consulta Alipay, CUP. Então, família de produtos eixo Y esta linha é uma fábrica de concreto que fornece funcionalidade para criar, modificar e consulta. Eixo dos X é o produto específico, respectivamente, para suportar micro-canal, e Alipay UnionPay. A partir da análise acima, podemos tirar uma diagramas UML preliminares.

 UML no gráfico acima, podemos ver que a estrutura básica para o desenho inicial do programa. É parte do código.

CreateMerchant interface pública {
    createMch public void ();
}

classe pública implementos AlipayCreateMerchant CreateMerchant {

    @Override
    createMch public void () {
        System.out.println ( "Alipay negócios foi criado");
    }
}
 

classe pública UnipayCreateMerchant implementos CreateMerchant {

    @Override
    createMch public void () {
        System.out.println ( "empresas CUP foram criadas");

    }
}

classe pública implementos WeiXinCreateMerchant CreateMerchant {

    @Override
    createMch public void () {
        System.out.println ( "micro-canal foi criado comerciante");
    }
}

interface pública ModifyMerchant {
    modifyMch public void ();
}

classe pública implementos AlipayModifyMerchant ModifyMerchant {

    @Override
    modifyMch public void () {
        System.out.println ( "Alipay negócios foi modificado");
    }
}

classe pública UnipayModifyMerchant implementos ModifyMerchant {

    @Override
    modifyMch public void () {
        System.out.println ( "CUP foram modificados comerciante");

    }
}

classe pública WeiXinModifyMerchant implementos ModifyMerchant {

    @Override
    modifyMch public void () {
        System.out.println ( "micro-letras foram modificadas comerciante");

    }
}

interface pública FilingFactory {
    pública CreateMerchant createMerchant ();
    pública ModifyMerchant modifyMerchant ();
    pública QueryMerchant queryMerchant ();
}
 

classe pública implementos AlipayFilingFactory FilingFactory {

    @Override
    pública CreateMerchant createMerchant () {
        return new AlipayCreateMerchant ();
    }

    @Override
    pública ModifyMerchant modifyMerchant () {
        return new AlipayModifyMerchant ();
    }

    @Override
    pública QueryMerchant queryMerchant () {
        return new AlipayQueryMerchant ();
    }

}

classe pública UnipayFilingFactory implementos FilingFactory {

    @Override
    pública CreateMerchant createMerchant () {
        return new UnipayCreateMerchant ();
    }

    @Override
    pública ModifyMerchant modifyMerchant () {
        return new UnipayModifyMerchant ();
    }

    @Override
    pública QueryMerchant queryMerchant () {
        return new UnipayQueryMerchant ();
    }

}

O código não se ater muito completo. Mas a ideia básica do código está em. Suponha que você queira adicionar uma apresentação do produto QQ, não é apenas criar um QQFlingFactory alcançar FilingFactory fábrica de depósito de concreto pode ser.

2.2 Modo Adapter

FUNDAMENTO: O sistema é necessária para fornecer uma interface externa para o sistema interno, que funciona sobre um montante pedido. Mas o processo de andamento do projeto, o plano em si vai herdar solicitar outros projectos a montante copiado esta peça, porque esse projeto é apenas responsável por transações relacionadas com o projeto é responsável pela apresentação comerciante, desempenhar as suas funções. Mas a dificuldade de obtenção de um certificado de comércio consistente e certificado de depósito, se a causa migrado, o que significa que os mesmos dois conjuntos de certificados precisam manter ambos os lados. Para não alterar o lado desenhado estrutura de código razoável, padrões de projeto decidiu adaptador modo.

RequestChannel interface pública {
    reqChannelCreate public void ();

    public void reqChannelModify ();

    reqChannelQuery public void ();
}

implementos classe pública RequestChannelAdapter RequestChannel {

    privado OtherItemRequestChannel otherItemRequestChannel; // interface para outros projectos
    
    @Override
    reqChannelCreate public void () {
        System.out.println ( "Este é um pedido para criar um monte de canais de lógica de negócios");
        otherItemRequestChannel.reqChannelCreate ();
    }
    @Override
    public void reqChannelModify ( ) {
    }
    @Override
    reqChannelQuery public void () {
    }

}

classe pública implementos AlipayCreateMerchant CreateMerchant {

    @Override
    createMch public void () {
        System.out.println ( "Alipay negócios foi criado");
        RequestChannel RequestChannel = new new RequestChannelAdapter ();
        RequestChannel.reqChannelCreate ();
    }
}

modelo 2.3 protótipo

modo de protótipo eo modo Mingke Longo, que visa criar uma propriedade como um objeto, copiando para fora, em vez de cada vez para instanciar. modelo de protótipo JVM pode reduzir a sobrecarga e melhorar o desempenho.

Antecedentes: Existe operação de leitura tabela de dados de importação em massa, linha da tabela Todos os campos são um alvo. Assim, usando essas razões, o modelo de objeto podem ser encapsulados. Note que o modelo de protótipo é dividido em ouro clone superficial e clone de profundidade. Quase todo mundo pode usar em seu próprio consultar, não para elaborar aqui.

classe Merchant os implementos da Cloneable {public
    nome Privado String;
    endereço de private String;
    Cordas getName () {public
        nome retorno;
    }
    public void o setName (String nome) {
        this.name = nome;
    }
    Cordas getAddress pública () {
        endereço de retorno;
    }
    pública o setAddress nulo (endereço string) {
        this.address = endereço;
    }
    // métodos java Nota aqui proporcionadas, ao criar um novo objecto, este clone único método de ajuste, em vez de instanciar um novo objecto
    clone Merchant pública () {
        Object = nulo;
        try {
            Object para super.clone = ();
            retorno (Merchant) objecto;
        } catch (CloneNotSupportedException e) {
            return NULL;
        }
    }
}

Estes são os fatores que eu considero este sistemas de arquivamento e do modelo de design utilizado, existem muitos tipos de padrões de design, precisamos continuar a aprender a se acumular, para melhor aplicá-lo ao seu projeto, tornar o projeto mais padronizado e mais fácil de manter .

Lançado três artigos originais · ganhou elogios 0 · Visualizações 67

Acho que você gosta

Origin blog.csdn.net/taipoucha5799/article/details/105028632
Recomendado
Clasificación