Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #23508
| From | markspace <markspace@nospam.nospam> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: DI/wiring |
| Date | 2013-04-18 12:16 -0700 |
| Organization | A noiseless patient Spider |
| Message-ID | <kkpgls$6aq$1@dont-email.me> (permalink) |
| References | <DI-wiring-20130418174944@ram.dialup.fu-berlin.de> |
On 4/18/2013 9:03 AM, Stefan Ram wrote:
> I have »invented« myself something that also seems to be
> known as »dependency injection« or »wiring«. I am doing it
I should have a look at Joerg's answer myself, but here's another idea.
Make an app context object that holds the state of your app.
class Context {
Engine getEngine()....
Printer getPrinter()...
}
Inject that into submodules in the code. Submodules are larger than
classes and can treat the context as immutable. The context then
becomes global but only for that module. The idea is that you still get
dependency injecting, but you can still test reasonably as well.
class SomeConfig {
Context context;
public SomeConfig( Context c ) { context = c; }
public init() {
Component c0 = new Component( context );
...
}
}
class Component {
Context context;...
public printIt() {
context.getPrinter().do something...
}
}
This reduces boilerplate but doesn't eliminate it. For some projects it
might be better to get a real dependency injection framework.
Back to comp.lang.java.programmer | Previous | Next — Next in thread | Find similar | Unroll thread
Re: DI/wiring markspace <markspace@nospam.nospam> - 2013-04-18 12:16 -0700
Re: DI/wiring Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2013-04-22 09:03 +0200
Re: DI/wiring markspace <markspace@nospam.nospam> - 2013-04-22 10:59 -0700
Re: DI/wiring Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2013-04-24 06:37 +0200
Re: DI/wiring Arved Sandstrom <asandstrom2@eastlink.ca> - 2013-04-24 10:28 -0300
csiph-web