Levels and Dimensions
Uncle Bob notes that the Dependency Inversion Principle and the Domain Driven Design concept of Layers seem to contradict each other until you introduce another dimension.
Bob then reports that "DDD also says that 'higher' layers should depend on 'lower' layers. Indeed, he stresses that when lower layers need to communicate upwards they should use callbacks or Observers. DDD is not the only source for this concept; it's pretty universal." But what is meant by higher and lower?
Martin explains that the Dependency Inversion Principle essentially means " that high level policy should not depend on low level detail. Yet the layering principle says that high level layers should depend upon low level layers. Clearly there is a mismatch here. Indeed, in the diagram above *everything* eventually depends upon the infrastructure; which is the the lowest level most detailed module of all. Could we be talking about two different dimensions of level? Could it be that a module is high level in one dimension and low level in another? What are these two dimensions?"
Bob says that perhaps the way to look at this is that infrastructure is orthogonal to the rest of the application. Martin says that that is the lesson of Gregor Kiczales' Aspect Oriented Programming and Steve Mellor's translation.
In our other linked article, John Zukowski details all of your options in Beyond the basics of JOptionPane . What makes the JOptionPane tricky to use is the same class is used to specify Message Dialogs, Confirm Dialogs, Input Dialogs, and Option Dialogs. You determine which type is created with one of seven constructors or with factory methods. There are more than two dozen constants defined in the class used to specify some of the options (such as OK_CANCEL_OPTION) and return values (such as CANCEL_OPTION). John's walk through the JavaDocs should make everything clear.
In today's java.net News Headlines
- BIE (Business Integration Engine) 5.7.2
- AspectWerkz 0.9
- Eclipse Releases Forms API
- Xerces-J 2.6.2
- Apache Tomcat 5.0.19 Stable and 4.1.30 Stable
- New Zealand TV Changes from Vignette to Apache Cocoon
Registered users can submit news items for the
href="http://today.java.net/today/news/">java.net News Page using
our news submission
form. All submissions go through an editorial review by news director
Steve Mallet before being posted to the site. You can also subscribe to
News RSS feed.
Current and upcoming
- February 24-26 Edge 2004 East
- March 4 Workshop Java Web Development
- March 5-7 Silicon Valley Software Symposium
- March 12-14 San Diego Software Symposium
- March 15-19 Software Developer Conference West
- March 19-21 Gateway Java Software Symposium
- March 22-26 Game Developers Conference, 2004
- March 23-25 7th Jini Community Meeting
- March 24-26 COMDEX Canada
Registered users can submit event listings for the
href="http://www.java.net/events">java.net Events Page using our
href="http://today.java.net/cs/user/create/e"> events submission
form. All submissions go through an editorial review before being
posted to the site.
Archives and Subscriptions: This blog is delivered weekdays as the
Today RSS feed. All java.net members can subscribe to the email
updates for the site at the href="https://java-net.dev.java.net/servlets/ProjectMailingListList">
java-net Mailing Lists page. You must be logged in to subscribe
to the javanet_Daily and javanet_Weekly lists. Also, once this page
is no longer featured as the front page of
java.net it will be archived along with other past issues in the href="http://today.java.net/today/archive/">java.net Archive.