Date: 2004-02-27T13:18:02 Editor: AaronFarr <[EMAIL PROTECTED]> Wiki: Apache Avalon Wiki Page: WhatIsIoC URL: http://wiki.apache.org/avalon/WhatIsIoC
no comment Change Log: ------------------------------------------------------------------------------ @@ -4,9 +4,19 @@ == Design Patterns == -Before we discuss Inversion of Control, we first need to discuss '''Design Patterns.''' Design Patterns are programming "best practices" -- common concepts which can be reused in a myriad of solutions. +Before we discuss Inversion of Control, we first need to discuss '''[http://c2.com/cgi/wiki?DesignPatterns Design Patterns].''' Design Patterns are programming "best practices" -- common concepts which can be reused in a myriad of solutions: -=== History of IoC === +''Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.'' -- Christopher Alexander + +Examples of design patterns includes the Observer pattern, the Singleton pattern, and Model View Controller (MVC) architecture. Interestingly enough, Inversion of Control ''isn't'' really a design pattern (see [http://www.betaversion.org/~stefano/linotype/news/38/ Stefano's thoughts]), but more of a general principle or set of design patterns. The goal of IoC is to isolate control. This involves using many other design patterns and principles such as: + + * Seperation of Concerns + * Interface Driven Design + * Dependency Management (via Dependency Injection or Service Lookup) + * Lifecycle Management + * Component Oriented Programming + +Inversion of Control originated as ''[http://www.betaversion.org/~stefano/linotype/news/42/ The Hollywood Principle]'': "don't call us, we'll call you." Under this premice, objects == What Are We Trying Invert == --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
