[2]
DejaVU Online:
Principles of Object-Oriented Software Development
(©)
public class envelope { envelope
public envelope() { }
public void message() {
System.out.println("hello ... ");
}
};
We will proceed in three steps: (1) The envelope class will be redesigned so that it acts only as an interface to the letter implementation class. (2) Then we introduce a factory object, that is used to create envelope and letter instances. (3) Finally, we refine the letter class into a singleton class, that prevents the creation of multiple letter instances.
public class envelope { envelope
letter impl;
public envelope() {
impl = new letter();
}
public void message() {
impl.message();
}
};
public class letter { letter
public letter() { }
public void message() {
System.out.println("Message in a letter");
}
};
public class factory { factory
public factory() { }
letter letter() { return new letter(); }
envelope envelope() { return new envelope(); }
};
public class envelope { envelope
letter impl;
public envelope() {
factory f = new factory();
impl = f.letter(); // obtained from factory
}
public void message() {
impl.message();
}
};
public class singleton extends letter { singleton
static int number = 0;
protected singleton() { }
static letter instance() {
if (number==0) {
theletter = new letter();
number = 1;
}
return theletter;
}
public void message() {
System.out.println("Message in a letter");
}
static letter theletter;
};
|
Hush Online Technology
hush@cs.vu.nl
12/29/99 |
|
|