Java - Programacion Patron Diseño

 
Vista:

Programacion Patron Diseño

Publicado por Javier (20 intervenciones) el 10/11/2015 21:53:57
Hola a todos,

Necesito implementar un software de generación de codigos en funcion de 3 parámetros: longitud del codigo, numero de codigos a generar y algoritmo (2 posibilidades, aleatorio o secuencial).

Se me ha ocurrido una solución que captura los parámetros por teclado, y con una estructura if-else (en función del algoritmo), genere los codigos necesarios.

Pero necesito que el código a implementar siga algun patrón de diseño. ¿A alguien se le ocurre el patrón de diseño que podría usar?

Gracias de antemano.


SAludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 349
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Programacion Patron Diseño

Publicado por Andrés (340 intervenciones) el 11/11/2015 00:06:36
De inicio ya tienes uno, el abstract factory y el factory method, para usar un algoritmo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Programacion Patron Diseño

Publicado por Javier (20 intervenciones) el 11/11/2015 00:11:41
¿Puedes explicarme algo mejor en que consiste y como aplicarlo?

Lo agradecería mucho.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 349
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Programacion Patron Diseño

Publicado por Andrés (340 intervenciones) el 11/11/2015 00:50:15
Abstract Factory pertenece a los patrones de mmm creational patterns
y provee la mejor forma para crear un objeto.

Dices que tienes dos algoritmos secuencial y aleatorio, realmente no
se que haga tu algorimo pero, supongamos que realiza una función p


1
2
3
4
5
public interface Algorithm {
 
	void p();
 
}

y las implementacioes:

1
2
3
4
5
6
7
8
9
10
11
public class AlgoritmoSecuencial implements Algorithm {
 
	public void p() {}
 
}
 
public class AlgoritmoAleatorio implements Algorithm {
 
	public void p() {}
 
}

esta es la fabrica

1
2
3
4
5
6
7
8
public interface AbstractFactory {
 
    int SEQUENCIAL = 1;
    int ALEATORIO = 2;
 
	Algorithm getAlgorithm(int tipo);
 
}

su implementación:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class AlgorithmFactory implements AbstractFactory {
 
    public Algorithm getAlgorithm(int tipo) {
 
    	if(AbstractFactory.SEQUENCIAL == tipo) {
 
    		return new AlgoritmoSecuencial();
 
    	}else if(AbstractFactory.ALEATORIO == tipo) {
 
		return new AlgoritmoAleatorio();
 
    	}
 
    }
 
}

y pues mmm ya esta :)

Ahhh también puedes agregar el patrón singleton en las implementaciones!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Programacion Patron Diseño

Publicado por Javier (20 intervenciones) el 11/11/2015 08:43:19
Muchas gracias por tu respuesta!

¿El patron singleton en que consiste?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 349
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Programacion Patron Diseño

Publicado por Andrés (340 intervenciones) el 11/11/2015 16:03:06
En pocas palabras, singleton consiste en: una sola instancia de la clase!, deja me doy un tiempo y te anexo como quedaría.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 349
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Programacion Patron Diseño

Publicado por Andrés (340 intervenciones) el 11/11/2015 16:41:29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package demo;
 
interface Algorithm {
 
	void p();
 
}
 
class AlgoritmoSecuencial implements Algorithm {
 
	// Singleton comienza aquí!
	//El constructor es privado, así que nadie más puede crear instancias 
	//de esta clase
	private AlgoritmoSecuencial() {	}
 
	private static class SingletonHolder {
		private static final Algorithm INSTANCE = new AlgoritmoSecuencial();
	}
 
	public static Algorithm getInstance() {
		return SingletonHolder.INSTANCE;
	}
 
	// Singleton termina aquí!
 
	public void p() {}
 
}
 
class AlgoritmoAleatorio implements Algorithm {
 
	// Singleton comienza aquí!
 
	//El constructor es privado, así que nadie más puede crear instancias 
	//de esta clase
	private AlgoritmoAleatorio() {}
 
	private static class SingletonHolder {
		private static final Algorithm INSTANCE = new AlgoritmoAleatorio();
	}
 
	// Singleton termina aquí!
	public static Algorithm getInstance() {
		return SingletonHolder.INSTANCE;
	}
 
	public void p() {}
 
}
 
interface AbstractFactory {
 
	public static enum TYPES {
		SECUENCIAL, ALEATORIO
	}
 
	Algorithm getAlgorithm(TYPES tipo);
 
}
 
class AlgorithmFactory implements AbstractFactory {
 
	// Singleton comienza aquí!
 
	//El constructor es privado, así que nadie más puede crear instancias 
	//de esta clase
	private AlgorithmFactory() { }
 
	private static class SingletonHolder {
		private static final AbstractFactory INSTANCE = new AlgorithmFactory();
	}
 
	public static AbstractFactory getInstance() {
		return SingletonHolder.INSTANCE;
	}
	// Singleton termina aquí!
 
	public Algorithm getAlgorithm(AbstractFactory.TYPES tipo) {
 
		switch (tipo) {
 
			case SECUENCIAL:
				return AlgoritmoSecuencial.getInstance();
			case ALEATORIO:
				return AlgoritmoAleatorio.getInstance();
			default:
				//Esto debería pasar!
				return null;
 
		}
 
	}
 
}
 
public class Demo {
 
	public static void main(String[] args) {
 
		AbstractFactory abstractFactory = AlgorithmFactory.getInstance();
 
		Algorithm algorithmSecuencial = abstractFactory.getAlgorithm(AbstractFactory.TYPES.SECUENCIAL);
		algorithmSecuencial.p();
 
		Algorithm algorithmAleatorio = abstractFactory.getAlgorithm(AbstractFactory.TYPES.ALEATORIO);
		algorithmAleatorio.p();
 
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Programacion Patron Diseño

Publicado por Javier (20 intervenciones) el 11/11/2015 16:56:11
Maravilloso!!

Muchísimas gracias! Creo que hay bastante desinformación sobre las buenas prácticas de programación...


Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar