| Java Training   Overview 
				
	This course seeks to develop, for the experienced Java programmer, a strong, shared vocabulary of design patterns and best practices. The course begins with a discussion of how to recognize and apply design patterns - that is, how to incorporate pattern awareness into one's own analysis, design, and implementation practices. The main body of the course focuses on the Gang of Four design patterns, with a chapter each on creational, behavioral, and structural patterns. The course includes both pencil-and-paper design exercises and traditional coding labs to reinforce finer points of important patterns.
 This is not a patterns catalog: it is as much a study of how to "think in patterns" as it is an introduction to several of the most important patterns. Students will be challenged to bring their own previous development experience to the discussion, to see the patterns in everyday design and coding solutions. The course puts more emphasis on some patterns than others. We believe that students will be better served by going into several patterns in depth -- and with lively discussions of several others -- than by through every GoF pattern in rote form.
 
 The course also includes an optional "Chapter Zero" on some more basic practices in object-oriented concepts and OO factoring and re-factoring. Though not appropriate for all students, it may be helpful for some audiences with less real-world Java experience.
 
 Java Training   Learning Objectives
 
Java Training   PrerequisitesStart to think in terms of design patterns.
       Recognize and apply patterns to specific software development problems.
       Use known patterns as a shared vocabulary in designing and discussing solutions.
       Use Factories and Singletons to control object creation, for a variety of reasons.
       Use Observers, Observables, and Model/View/Controller systems to decouple application behavior and preserve code scalability.
       Understand the full motivation for the Command pattern and take advantage of Command frameworks in JFC.
       Implement Adapters, rather than building redundant classes or creating intermediate data structures for consumption by existing code.
       Understand and apply a range of other J2SE and J2EE patterns to improve code quality and scalability, and to produce high-quality solutions right off the bat.
 
					Java Training   Course durationSolid Java programming experience is essential - especially object-oriented use of the language. Language features and techniques that are integral to some lab exercises include interfaces and abstract classes, threading, generics and collections, and recursive methods.
Previous experience with UML (Unified Modeling Language) will be helpful, but is not critical. The course uses UML class diagrams extensively but keeps notation fairly simple, and also includes a quick-reference appendix.
					 
 3 days.
 
 Java Training   Course outline
 
 Chapter 0. Object-Oriented Refactoring
 
Chapter 1. Recognizing and Applying PatternsA Place for Everything ...Warning SignsMagic Numbers and String LiteralsEffective Use of Enumerated TypesExternalizing Volatile InformationOver-EncapsulationSeparation of ConcernsMaking Classes ObservableDelegation Instead of InheritanceFactories and Dependency Injection 
Chapter 2. Creational PatternsDesign PatternsDefining a PatternUnified Modeling LanguageSeeing PatternsWarning Signs and PitfallsFunctional Programming and Its Impact on Patterns 
Chapter 3. Behavioral PatternsFactory PatternsThe Singleton PatternSingleton vs. Class UtilityAPIs and ProvidersCascading FactoriesFactories vs. Dependency Injection 
Chapter 4. Structural PatternsUn-Tangling Your CodeWarning Sign: Letting Subclasses DictateThe Strategy PatternThe Template Method PatternThe Observer PatternFunctional Interfaces as ObserversThe Model/View/Controller PatternThe Command PatternThe Chain of Responsibility Pattern 
Chapter 5. J2EE PatternsThe Composite PatternThe Adapter PatternAdapters for PerformanceThe Decorator PatternThe Façade PatternThe Flyweight PatternFixed vs. Open Flyweights 
Appendix A.  Learning ResourcesModel/View/Controller, ReduxThe Intercepting Filter PatternThe Front and Application Controller PatternsThe Business Delegate PatternThe Service Locator PatternThe Transfer Object PatternThe Composite Entity PatternThe Data Access Object Pattern 
 Appendix B.  UML Quick Reference
 
 System Requirements
 
 
 
| Hardware – minimal: | Core i5, 1.8 GHz, 4 gig RAM, 500 meg disk space. |  
| Hardware – recommended: | Core i5, 2.8 GHz, 8 gig RAM, 500 meg disk space. |  
| Operating system: | Tested on Windows 7/8, Mac OS 10.8.5 |  
 | Network and Security: | Limited privileges required |  
 | Software: | All free downloadable tools. |  
 
 |