Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GRASP Bank - Flutter Architecture

Este proyecto es una aplicación móvil desarrollada en Flutter que simula las operaciones básicas de un banco virtual.

El objetivo principal no es la funcionalidad bancaria en sí, sino la demostración de una arquitectura de software robusta basada en los Principios GRASP y Patrones Emergentes de diseño.

Características Funcionales

  • Gestión de Estado de Cuenta: Abrir y Cerrar cuentas.
  • Transacciones: Depósitos y Retiros con validación de fondos.
  • Reactividad: Actualización de la UI en tiempo real basada en el estado del dominio.

Arquitectura y Patrones de Diseño

El proyecto sigue una estructura de capas estricta para asegurar Alta Cohesión y Bajo Acoplamiento.

Principios GRASP Aplicados

Patrón Implementación en Código Descripción
Controller BankController Media entre la UI y la lógica de negocio. Recibe eventos del usuario y orquesta la respuesta.
Pure Fabrication BankRepositoryImpl Una clase artificial creada para manejar la persistencia y reglas de negocio, evitando contaminar el modelo de dominio.
Information Expert BankAccount La entidad que posee los datos (saldo, estado) y es responsable de mantener su integridad.
Low Coupling IBankRepository El sistema depende de abstracciones (interfaces), no de implementaciones concretas.
Creator Injector Clase responsable de instanciar y ensamblar las dependencias del sistema.

Patrones Emergentes

  1. Repository Pattern: Aísla la capa de datos. Permite cambiar la fuente de datos (API, Base de Datos local, Mock) sin afectar a la UI ni al Controlador.
  2. Dependency Injection (DI): Inyectamos las dependencias en el constructor del controlador a través de la clase Injector, facilitando el testing y la escalabilidad.

Estructura del Proyecto

lib/
├── core/
│   └── injector.dart         # Configuración de Inyección de Dependencias
├── data/
│   └── repositories/
│       └── bank_repo_impl.dart # Implementación lógica (Pure Fabrication)
├── domain/
│   ├── interfaces/
│   │   └── i_bank_repo.dart  # Contrato abstracto (Low Coupling)
│   └── models/
│       └── bank_account.dart # Entidad del dominio (Information Expert)
├── presentation/
│   ├── controllers/
│   │   └── bank_controller.dart # Gestión de estado (Controller)
│   └── screens/
│       └── home_screen.dart     # Interfaz de Usuario (Flutter Widgets)
└── main.dart                 # Punto de entrada

Instalación y Ejecución

  1. Clonar el repositorio:
git clone https://github.com/Alexis-Lozada/grasp_bank.git
  1. Instalar dependencias:
cd grasp_bank
flutter pub get
  1. Ejecutar la aplicación:
flutter run

Tecnologías

  • Flutter (Framework UI)
  • Dart (Lenguaje)
  • ChangeNotifier (Gestión de estado nativa)

Hecho con ☕ y Flutter.

About

Simulación de App Bancaria en Flutter implementando arquitectura limpia basada en principios GRASP (Controller, Pure Fabrication, Low Coupling) y patrones emergentes (Repository & Dependency Injection).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages