Exercise 26 of The Pragmatic Programmer

Posted by _ande_turner_ on Stack Overflow See other posts from Stack Overflow or by _ande_turner_
Published on 2010-03-19T07:22:51Z Indexed on 2010/03/19 7:41 UTC
Read the original article Hit count: 499

There is a code snippet presented in The Pragmatic Programmer on page 143 as:

public class Colada {
    private Blender myBlender;
    private Vector myStuff;

    public Colada() {
        myBlender = new Blender();
        myStuff = new Vector();
    }
    private doSomething() {
        myBlender.addIngredients(myStuff.elements());
    }
}

This obeys the Law of Demeter / Principle of Least Knowledge.

Is it preferable to, and are there any caveats for, replacing it with the following, which utilises Dependency Injection?

public class Colada throws IllegalArgumentException {
    private Blender myBlender;
    private Vector myStuff;

    public Colada(Blender blender, Vector stuff) {
        blender == null ? throw new IllegalArgumentException() : myBlender = blender;
        stuff == null ? throw new IllegalArgumentException() : myStuff = stuff;
    }
    public getInstance() {
        Blender blender = new Blender();
        Vector stuff = new Vector();
        return new Colada(blender, stuff);
    }
    private doSomething() {
        myBlender.addIngredients(myStuff.elements());
    }
}

© Stack Overflow or respective owner

Related posts about java

Related posts about law-of-demeter