[RESOLVIDO] DESIGN PATTERNS duvida.. JFrame

9 respostas
makecio

Seguindo um artigo aqui do forum >>> http://www.guj.com.br/article.show.logic?id=137

Eu estudei o modo de design pattern Creational (Criacional).

Com auxilio do código do exemplo do Carro tentei fazer um com a seguinte ideia.

Super Class Loja
Class LojaFactory
Class Adm
Class Usuario
Class Tela de Login

O que ira acontecer ? de acordo com o nivel do banco do funcionario , aclass LojaFacoty ira chamar uma das 3 classes adm, gerente ou usuario.

Consegui fazer do mesmo modo que no Exemplo de carro perfeitamente. Com class limpas.

O problema esta sendo fazer isso com Class de Formulario JFrame, pois elas estão sendo (extends javax.swing.JFrame) e preciso deixar as 3 class (extends Loja).

Alguem ai poderia me ajuudar?

9 Respostas

francislon

Criacional não é um Design Pattern. É uma categorias de padrões. Qual padrão você está tentando aplicar exatamente?

Andre_Fonseca

makecio:

Com auxilio do código do exemplo do Carro tentei fazer um com a seguinte ideia.

Super Class Loja
Class LojaFactory
Class Adm
Class Usuario
Class Tela de Login

O que ira acontecer ? de acordo com o nivel do banco do funcionario , aclass LojaFacoty ira chamar uma das 3 classes adm, gerente ou usuario.

Consegui fazer do mesmo modo que no Exemplo de carro perfeitamente. Com class limpas.

O problema esta sendo fazer isso com Class de Formulario JFrame, pois elas estão sendo (extends javax.swing.JFrame) e preciso deixar as 3 class (extends Loja).

Alguem ai poderia me ajuudar?

oi,

você está falando de uma factory certo? dá uma olhada neste link

[]´s

makecio

Obrigado pelas opniões.

Mas de qualquer forma ainda nao resolveu meu problema.

Como eu consigo retornar uma classe JFrame na LojaFactory se as 3 classses sao (extends javax.swing.JFrame) .

Por que como eu vi no exemplo do carro (no artigo) é necessario uma herança da super classe ( Loja )

adriano_si

Queres retornar uma view por Factory ???

makecio

Descupas… eu devo estar me expressando errado.

segue abaixo a class LojaFactory

public class LojaFactory { public static Loja VerificaNivel( int nivel ) { if( nivel == 1 ) return new adm(); else if( nivel == 2 ) return new gerente(); else if( nivel == 3 ) return new usuario(); else return null; } }

ela vai receber por parametro o nivel.
De acordo com o nivel quero que chame uma dessas classes. adm, gerente ou usuario que estão (extends a super classe Loja).

O problema é… como eu faço pra elas serem uma Formulario JFrame no lugar de uma class vazia.
Pois quando eu crio elas como formulario JFrame , o netbeans automaticamente deixa elas como ( extends javax.swing.JFrame ), e eu necessito que fique ( extends Loja ), mas se eu deixo assim o JFrame aparece varios erros.

adriano_si

Cara, pensa comigo… Queres desenhar uma Tela de Sistema e fazer esse cara extender Loja ??? Isso totalmente anti OO, Orientação a Objetos a nível 0… Tuas heranças e implementações devem fazer algum sentido no mundo real…

Tela de Sistema É-UMA Loja ??

Não existe isso… repensa no Pattern, que apesar de não conhecer a fundo, acho que o Objetivo dele não é esse…

Minha idéia é fazeres uma classe que essa sim, vai chamar a tua Tela de acordo com o Objeto criado do Tipo Loja, mas nem sei se isso é uma boa prática…

makecio

Obrigado pela ajuda adriano. Mas eu sabia disso, mas como eu disse devo estar me expressando errado.

Concerteza sim o que voce disse esta certo.

Achei a solução para o resultado.

A superclasse tbm tem que ser criado como Formulario JFrame, assim quando eu for criar cada class JFrame dos tipos de usuarios não acontecera nenhum erro.

Obrigado todos!

G

Olá, seu eu entendi direito você precisa que estas suas subclasses estendam de Loja, para que isso fique correto então você precisa estender Loja de JFrame, pois o Java não permite Herança Múltipla, e se quiseres implementar outras funcionalidades você pode então implementar interfaces na sua classe (Loja) com métodos abstratos e implementá-los no momento da criação das subclasses, que ai sim vão estender de Loja.

public interface ILoja {
    public abstract meuMetodo();
}

public class Loja extends JFrame implements ILoja {
    // Codigos para a montagem da GUI e tals
    @Override
    public meuMetodo() {
        // doSomething...
    }
}

public class Adm extends Loja {
    // code here...
}

public class LojaFactory {
    public static Loja VerificaNivel( int nivel ) {
        if( nivel == 1 ) return new adm();
        else if( nivel == 2 ) return new gerente();
        else if( nivel == 3 ) return new usuario();
        else return null;
    }
}

caso não seja isso que você procura por favor desconsidere o post.

makecio

O topico ja esta resolvido Godzila…

Mas gostaria de agradecer , pois foi certinho. Foi isso memso que eu fiz aqui e agora esta funcionando perfeitamente.

Mto Obrigado

Criado 4 de novembro de 2010
Ultima resposta 5 de nov. de 2010
Respostas 9
Participantes 5