«

»

Apr 02

Print this Post

Usando Interfaces no ColdFusion

Quando aplicamos Orientação a Objetos em nossos projetos e principalmente quando definimos padrões de desenvolvimento.

Muitas vezes torna-se inviável deixar que desenvolvedores implementem sem seguir as regras de implementação da nossa arquitetura.
Um exemplo disso, é ter uma camada onde tenhamos classes que devam seguir nomeclaturas específicas nos métodos.
Como uma camada DAO sem ORM. Onde definamos que os métodos do crud básico se chamam:


find();
findByKey( Numeric id );
save( DTO dto );
remove( DTO dto );

Dessa forma, para seguirmos um padrão em todas as classes DAO de nossa aplicação, exigimos que esses métodos se chamem assim e sejam assinados assim para qualquer uma implementação.
Mas podemos contratar um programador teimoso e o mesmo resolve implementar assim:


buscar();
buscarId( id );
salvar( id, nome, sobrenome, idade );
editar( id, nome, sobrenome, idade );
remover( id );

Funcionaria se a implementação do método fizer o que tiver que ser feito. Mas e o padrão?
Também para evitar esses problemas, existe uma coisa chamada Interface.
Interface seria uma Classe que contém um conjunto de assinaturas, que servem como base/regra para toda e qualquer classe que implemente essa Interface.
Ou seja, uma classe que implementa uma Interface, é obrigada a conter a implementação de todos os métodos assinados na Interface. Pode conter mais métodos, mas não pode deixar de ter nenhum dos métodos assinados na Interface.
Já na Interface só pode ter a assinatura, e nunca a implementação do método.
Por convenção e em alguns casos por Regra, o nome de uma Interface deve começar pela Letra I em maiúsculo. Ex. IBusiness.cfc

Vejamos um exemplo de uma Interface no ColdFusion e sua implementação em uma classe.


<cfinterface displayname="IBusiness">
    <cffunction name="find" returntype="Query" output="no">
    </cffunction>
    <cffunction name="findByKey" returntype="Query" output="no">
        <cfargument name="id" type="numeric" required="true" />
    </cffunction>
    <cffunction name="save" returntype="void" output="no">
        <cfargument name="dto" type="Any" required="true" />
    </cffunction>
    <cffunction name="remove" returntype="void" output="no">
        <cfargument name="id" type="Numeric" required="true" />
    </cffunction>
</cfinterface>

<cfcomponent displayname="UserDAO" implements="IBusiness">
<cffunction name="find" returntype="Query" output="no">
    <!--- Implementação do método --->
    <cfreturn query />
</cffunction>
<cffunction name="findByKey" returntype="Query" output="no">
    <cfargument name="id" type="numeric" required="true" />
    <!--- Implementação do método --->
    <cfreturn query />
</cffunction>
<cffunction name="save" returntype="void" output="no">
    <cfargument name="dto" type="Any" required="true" />
    <!--- Implementação do método --->
</cffunction>
<cffunction name="remove" returntype="void" output="no">
    <cfargument name="id" type="Numeric" required="true" />
    <!--- Implementação do método --->
</cffunction>
</cfcomponent>

Bom como vimos, é bem símples implementar usando Interfaces.
Façam testes, deixem de implementar um método assinado na Interface e vejam como se comporta.
E usem, é muito interessante usar esse recurso, garante uma integridade no código das suas aplicações.
A Interface no ColdFusion funciona desde a versão 8 e pode ser visto mais detalhes na documentação clicando AQUI.

Abraços

Paulo Teixeira
Fonte: http://www.pauloteixeira.blog.br/site/index.php/content/2012/usando-interfaces-no-coldfusion/

Permanent link to this article: http://ensina.me/coldfusion/usando-interfaces-no-coldfusion/

Leave a Reply