Proyecto Método Plantilla PDF
Proyecto Método Plantilla PDF
Proyecto Método Plantilla PDF
Facultad de Sistemas
Ing. Wilson Aguin
5. Proporcionar un método que permite que las subclases redefinan parte del
método sin rescribirlo.
VENTAJAS:
• Se puede reciclar el código fácilmente.
DESVENTAJAS:
APLICABILIDAD
1. Utiliza el patrón Template Method cuando quieras permitir a tus clientes que
extiendan únicamente pasos particulares de un algoritmo, pero no todo el
algoritmo o su estructura.
3. Utiliza el patrón cuando tengas muchas clases que contengan algoritmos casi
idénticos, pero con algunas diferencias mínimas. Como resultado, puede que
tengas que modificar todas las clases cuando el algoritmo cambie.
CÓMO IMPLEMENTARLO
5. Para cada variación del algoritmo, crea una nueva subclase concreta.
Ésta debe implementar todos los pasos abstractos, pero
también puede sobrescribir algunos de los opcionales.
PROS Y CONTRAS
1. Puedes permitir a los clientes que sobrescriban tan solo ciertas partes de un
algoritmo grande, para que les afecten menos los cambios que tienen lugar
en otras partes del algoritmo
5. Los métodos plantilla tienden a ser más difíciles de mantener cuantos más
pasos tengan.
/**
* @author jorge
* @version 1
*/
public abstract class ProamericaCuentaBancaria {
/**
* variables declaradas como privadas
*/
private String NoCuenta;
private static float SaldoInicial;
/**
* @return the NoCuenta
*/
public String getNoCuenta() {
return NoCuenta;
}
/**
* @param NoCuenta the NoCuenta to set
*/
public void setNoCuenta(String NoCuenta) {
this.NoCuenta = NoCuenta;
}
/**
* @return the SaldoInicial
*/
public float getSaldoInicial() {
return SaldoInicial;
}
/**
* @param SaldoInicial the SaldoInicial to set
* @return
*/
public float setSaldoInicial(float SaldoInicial) {
return this.SaldoInicial = SaldoInicial;
}
/**
*
* @param Extra
* @return
*/
public float deposito(float Extra){
this.SaldoInicial = this.SaldoInicial + Extra;
return this.SaldoInicial;
}
/**
*
* @param Retiro
* @return
*/
public float Retiros(float Retiro){
if(Retiro <= this.SaldoInicial){
this.SaldoInicial= this.SaldoInicial - Retiro;
}else{
this.SaldoInicial= this.SaldoInicial;
}
return this.SaldoInicial;
}
/**
*
*
*/
public abstract String mensajes();
/**
*
* @param NoCuenta
* @param Monto
* @param Opcion
*/
public void Operaciones(String NoCuenta, float Monto, int Opcion){
setNoCuenta(NoCuenta);
switch(Opcion){
case 1:
deposito(Monto);
break;
case 2:
Retiros(Monto);
break;
default:
}
}
2. Clase Ventanilla
package ClasesCodigo;
import Vistas.VentanillaVista;
/**
*
* @author jorge
*/
public class Ventanilla extends ProamericaCuentaBancaria{
public Ventanilla() {
}
3. Clase CajeroAutomatico
package ClasesCodigo;
/**
*
* @author jorge
*/
public class CajeroAutomatico extends ProamericaCuentaBancaria{
/**
*
*/
public CajeroAutomatico(){
}
/**
*
* @param NoCuenta
* @param Monto
* @param Opcion
*/
public CajeroAutomatico(String NoCuenta, float Monto, int Opcion){
Operaciones(NoCuenta, Monto, Opcion);
}
@Override
public String mensajes() {
return "Bienvenido al cajero, Por favor ingrese los datos...";
}
4. Clase Autobanco
package ClasesCodigo;
/**
*
* @author jorge
*/
public class AutoBanco extends ProamericaCuentaBancaria{
/**
*
*/
public AutoBanco(){
}
/**
*
* @param NoCuenta
* @param Monto
* @param Opcion
*/
public AutoBanco(String NoCuenta, float Monto, int Opcion){
Operaciones(NoCuenta, Monto, Opcion);
}
@Override
public String mensajes() {
return "Bienvenido al AutoBanco, en que le podemos ayudar?";
}
}
CONCLUSIONES
2. Logramos observar que con este patrón de diseño es mucho más fácil
localizar errores y poder hacer modificaciones al código fácilmente
1. Usar este método nos ayuda a que nuestro código sea más legible y
ordenado dentro del esqueleto de este.