Skip to content

Java Sin Patron

DiegoS edited this page Dec 15, 2017 · 5 revisions

Caso de prueba

    public void testBizAlwaysWin() {
        Entity[]arrayOfEntities = {
                new EntityBiz(),
                new EntityQux()
        };

        EntityLeakCollection ec = new EntityLeakCollection(arrayOfEntities);
        assertEquals(new EntityBiz(), ec.winner());
    }

Código que resuelve el requerimiento

    public Entity winner() {
        Entity result = null;

        for( Entity e : this.entities) {
            if ( e.happens() ) {
                result = e;
                break;
            }
        }

        if ( result == null ) {
            result = new NullLeakEntity();
        }

        return result;
    };

La estrategia que seguimos aquí es encontrar cuál entidad ocurre primero mediante la implementación del método happens. Veamos como lo implementa cada entidad.

EntityBiz

public class EntityBiz implements Entity {

    @Override
    public boolean happens() {
        return true;
    }

    // ... 
}

EntityQux

public class EntityQux implements Entity {
    @Override
    public boolean happens() {
        return false;
    }
}

NullLeakEntity

public class NullLeakEntity implements Entity {
    @Override
    public boolean happens() {
        return false;
    }
}

Buscamos siempre devolver una Entity para evitar la utilización de null haciendo uso del patrón Null.

Cómo funciona?

En este caso la implementación es obvia. Se trata de hacer una búsqueda en la colección utilizando el criterio oculto en happens.

Código aquí

Calidad y cobertura

java coverage

Clone this wiki locally