|By Tad Anderson||
|March 4, 2014 10:47 PM EST||
|I have spent the past few weeks watching this video series. I started watching it on the treadmill in the morning before work. I did that until I hit lesson 5. It is 4 hours and 20 minutes long. I started watching lesson 5 in front of the computer, not because I didn't want to walk for over four hours, but because I wanted to look at the code you can download with these lessons.|
In lesson 5 covers a ton of patterns. The thing I like most about the way the patterns are introduced is that they are introduced working with other patterns. The way patterns should be used, together.
He uses lots of diagrams and walks through the tons of code making sure the patterns are thoroughly cover.
The thing I liked most about the course was that the speaker is not a pattern zealot. He makes sure to tell you when you would not want to use patterns and why. He gives the advantages and disadvantages of each pattern.
The downloadable code is very well organized and usable. It was really nice to just import the project, build it, and run it. No issues at all. I am not usually that lucky with Java samples.
You do not need to know Java to watch this course. I do very very little in Java. I am in Objective-C or C# 90% of the time I am in code. I do have a lot of experience with patterns at all levels (code, integration, architectural, information management, enterprise, etc.). Although you can do without Java, I do recommend you have OOP under your belt. I also felt having the past experience with pattern really helped me keep up.
If you don't have pattern experience, I think you may have to work a little harder to keep up. That is not a bad thing because the material covered is real worth the extra effort to get under your belt. The more you work at understanding the concepts the the speaker cover, the more embedded in your development thought process it will become.
Below is a brief overview of each lesson. They are taken from the publisher's web site.
Experts in most domains perform quite differently than beginners. For example, professional athletes, musicians, and dancers move fluidly and effortlessly, without focusing on each individual movement. Likewise, when master software developers write code, they approach it differently than novices, drawing on years of design experience to help guide their solutions.
When watching experts perform, it's often easy to forget how much effort they put into reaching these high levels of achievement. Continuous practice, repetition, and mentoring from other experts are crucial to their success. At the heart of all these activities is knowledge and mastery of patterns, which are reusable solutions to common problems that arise within particular contexts.
In this lesson you learn to recognize the importance of design experience when becoming a master software developer. You also learn what patterns are and how they help codify design experience to improve software quality and developer productivity. In addition, you learn the common characteristics of patterns and pattern descriptions. Finally, you learn about the history of the Gang of Four book and its patterns, as well as learn about key types of relationships among patterns.
While it’s certainly possible to discuss patterns in the abstract, good design and programming practices are not best learned through generalities and platitudes. Instead, it’s more effective to see how significant programs can be made easier to write and read, easier to maintain and modify, and more efficient and robust via the application of time-proven software patterns.
This lesson therefore presents an overview of an expression tree processing app that we use as a case study throughout the course. You learn about the goals of this case study, which provides a realistic–yet tractable–context in which to explore the why, the how, and the benefits and limitations of applying many Gang of Four design patterns to an application written in Java. Using the case study as a guide, you also learn how to recognize key structural and behavioral properties in a domain, as well as understand the case study's functional and non-functional requirements.
All the pattern-oriented software presented in the case study is available in open-source form from the course website. You can see throughout the course that applying Gang of Four patterns in the case study not only improves the application’s modularity, extensibility, and quality but also enhances its portability so that it runs on a range of Java platforms, including Android and Eclipse.
Algorithmic decomposition is a historically popular software development method that structures software based on the actions performed by algorithms in a program. It decomposes general actions in an algorithm iteratively and recursively into more specific actions. The design components in an algorithmic decomposition typically correspond to processing steps in an execution sequence, which are usually implemented via functions or procedures.
In this lesson you learn how to develop an algorithmic decomposition of the expression tree processing app case study. You also learn how to evaluate the benefits and limitations of algorithmic decomposition. This material provides a baseline for comparison with our pattern- and object-oriented expression tree processing app presented in subsequent lessons.
Object-oriented design is a method of planning a system of interacting objects to solve software problems. This design paradigm employs hierarchical data abstraction, where components are structured based on stable class/object roles and relationships, rather than functions corresponding to actions (as is the case with algorithmic decomposition). Moreover, object-oriented design associates actions with classes of objects in a manner that emphasizes high cohesion and low coupling. In many well-designed object-oriented programs, classes and objects are defined and associated in accordance with patterns and combined to form frameworks.
In this lesson you learn how to develop an object-oriented design for the expression tree processing app case study. In addition, you learn how to evaluate the benefits and limitations of object-oriented design relative to the algorithmic decomposition approach presented in Lesson 3.
The book Design Patterns: Elements of Reusable Object-Oriented Software (the so-called “Gang of Four” book) presents 23 patterns that document recurring solutions to common problems that arise when developing software in particular contexts. In this lesson you learn how more than a dozen patterns from the Gang of Four book can be applied to the Java-based expression tree processing app case study to resolve key design problems and improve the apps modularity, extensibility, portability, and quality. This lesson forms the bulk of the course and covers the following patterns:
• Composite, which treats individual objects and multiple, recursively-composed objects uniformly.
• Bridge, which separates an abstraction from its implementation(s) so the two can vary independently.
• Interpreter, which when given a language, defines a representation for its grammar.
• Builder, which separates the construction of a complex object from its representation.
• Iterator, which accesses elements of an aggregate without exposing its representation.
• Strategy, which defines a family of algorithms, encapsulates each one, and makes them interchangeable.
• Visitor, which centralizes operations on an object structure so that they can vary independently.
• Command, which encapsulates the request for a service as an object.
• Factory Method, which provides an interface for creating an object, but leaves the choice of the concrete type to a subclass.
• State, which allows an object to alter its behavior when its internal state changes, making object appear to change its class.
• Template Method, which provides a skeleton of an algorithm in a method, deferring some steps to subclasses.
• Singleton, which ensures a class only has one instance and provides a global point of access.
The lesson also touches on several other Gang of Four patterns, including Abstract Factory, Adaptor, Decorator, and Observer.
The pattern- and object-oriented version of the expression tree processing app case study presented in Lesson 5 provided many improvements compared with the algorithmic decomposition approach described in Lesson 3. For example, it's much more modular and extensible, its design matches the domain better, and it incurs less space overhead. The design of the expression tree process app also exhibits “high pattern density.” For instance, nearly all its classes play a role in one or more Gang of Four patterns. In addition, patterns help clarify the relationships of the many classes comprising the case study’s design. The same pattern-oriented design can be implemented readily in many popular object-oriented programming languages. For example, the Java and C++ solutions are nearly identical, modulo minor syntactic and semantic differences in these two languages. Although pattern- and object-oriented solutions are powerful, becoming a master software developer requires a balanced and nuanced understanding of the pros and cons of patterns. In this lesson, you learn how to evaluate both the benefits and limitations of patterns.
I highly recommend this video series to anyone working in an object oriented language.
Get the video series here.
If you have no design pattern experience at all, below are a few of the best available on the topic.
As data explodes in quantity, importance and from new sources, the need for managing and protecting data residing across physical, virtual, and cloud environments grow with it. Managing data includes protecting it, indexing and classifying it for true, long-term management, compliance and E-Discovery. Commvault can ensure this with a single pane of glass solution – whether in a private cloud, a Service Provider delivered public cloud or a hybrid cloud environment – across the heterogeneous enter...
Oct. 26, 2016 05:30 PM EDT Reads: 1,502
SYS-CON Events announced today that Cloudbric, a leading website security provider, will exhibit at the 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA. Cloudbric is an elite full service website protection solution specifically designed for IT novices, entrepreneurs, and small and medium businesses. First launched in 2015, Cloudbric is based on the enterprise level Web Application Firewall by Penta Security Sys...
Oct. 26, 2016 05:15 PM EDT Reads: 1,259
WebRTC sits at the intersection between VoIP and the Web. As such, it poses some interesting challenges for those developing services on top of it, but also for those who need to test and monitor these services. In his session at WebRTC Summit, Tsahi Levent-Levi, co-founder of testRTC, reviewed the various challenges posed by WebRTC when it comes to testing and monitoring and on ways to overcome them.
Oct. 26, 2016 05:00 PM EDT Reads: 4,202
"Matrix is an ambitious open standard and implementation that's set up to break down the fragmentation problems that exist in IP messaging and VoIP communication," explained John Woolf, Technical Evangelist at Matrix, in this SYS-CON.tv interview at @ThingsExpo, held Nov 4–6, 2014, at the Santa Clara Convention Center in Santa Clara, CA.
Oct. 26, 2016 05:00 PM EDT Reads: 9,049
Rapid innovation, changing business landscapes, and new IT demands force businesses to make changes quickly. In the eyes of many, containers are at the brink of becoming a pervasive technology in enterprise IT to accelerate application delivery. In this presentation, you'll learn about the: The transformation of IT to a DevOps, microservices, and container-based architecture What are containers and how DevOps practices can operate in a container-based environment A demonstration of how Docke...
Oct. 26, 2016 04:30 PM EDT Reads: 1,668
Enterprises have been using both Big Data and virtualization for years. Until recently, however, most enterprises have not combined the two. Big Data's demands for higher levels of performance, the ability to control quality-of-service (QoS), and the ability to adhere to SLAs have kept it on bare metal, apart from the modern data center cloud. With recent technology innovations, we've seen the advantages of bare metal erode to such a degree that the enhanced flexibility and reduced costs that ...
Oct. 26, 2016 04:15 PM EDT Reads: 343
In his general session at 18th Cloud Expo, Lee Atchison, Principal Cloud Architect and Advocate at New Relic, discussed cloud as a ‘better data center’ and how it adds new capacity (faster) and improves application availability (redundancy). The cloud is a ‘Dynamic Tool for Dynamic Apps’ and resource allocation is an integral part of your application architecture, so use only the resources you need and allocate /de-allocate resources on the fly.
Oct. 26, 2016 04:00 PM EDT Reads: 3,824
DevOps is being widely accepted (if not fully adopted) as essential in enterprise IT. But as Enterprise DevOps gains maturity, expands scope, and increases velocity, the need for data-driven decisions across teams becomes more acute. DevOps teams in any modern business must wrangle the ‘digital exhaust’ from the delivery toolchain, "pervasive" and "cognitive" computing, APIs and services, mobile devices and applications, the Internet of Things, and now even blockchain. In this power panel at @...
Oct. 26, 2016 04:00 PM EDT Reads: 2,116
Governments around the world are adopting Safe Harbor privacy provisions to protect customer data from leaving sovereign territories. Increasingly, global companies are required to create new instances of their server clusters in multiple countries to keep abreast of these new Safe Harbor laws. Is it worth it? In his session at 19th Cloud Expo, Adam Rogers, Managing Director of Anexia, Inc., will discuss how to keep your data legal and still stay in business.
Oct. 26, 2016 03:45 PM EDT Reads: 1,510
SYS-CON Events announced today that SoftNet Solutions will exhibit at the 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA. SoftNet Solutions specializes in Enterprise Solutions for Hadoop and Big Data. It offers customers the most open, robust, and value-conscious portfolio of solutions, services, and tools for the shortest route to success with Big Data. The unique differentiator is the ability to architect and ...
Oct. 26, 2016 03:30 PM EDT Reads: 1,079
In the 21st century, security on the Internet has become one of the most important issues. We hear more and more about cyber-attacks on the websites of large corporations, banks and even small businesses. When online we’re concerned not only for our own safety but also our privacy. We have to know that hackers usually start their preparation by investigating the private information of admins – the habits, interests, visited websites and so on. On the other hand, our own security is in danger bec...
Oct. 26, 2016 02:45 PM EDT Reads: 353
Successful transition from traditional IT to cloud computing requires three key ingredients: an IT architecture that allows companies to extend their internal best practices to the cloud, a cost point that allows economies of scale, and automated processes that manage risk exposure and maintain regulatory compliance with industry regulations (FFIEC, PCI-DSS, HIPAA, FISMA). The unique combination of VMware, the IBM Cloud, and Cloud Raxak, a 2016 Gartner Cool Vendor in IT Automation, provides a co...
Oct. 26, 2016 02:15 PM EDT Reads: 1,291
SYS-CON Events announced today that Embotics, the cloud automation company, will exhibit at the 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA. Embotics is the cloud automation company for IT organizations and service providers that need to improve provisioning or enable self-service capabilities. With a relentless focus on delivering a premier user experience and unmatched customer support, Embotics is the fas...
Oct. 26, 2016 02:00 PM EDT Reads: 1,001
SYS-CON Events announced today that MathFreeOn will exhibit at the 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA. MathFreeOn is Software as a Service (SaaS) used in Engineering and Math education. Write scripts and solve math problems online. MathFreeOn provides online courses for beginners or amateurs who have difficulties in writing scripts. In accordance with various mathematical topics, there are more tha...
Oct. 26, 2016 01:30 PM EDT Reads: 1,109
SYS-CON Events announced today that Niagara Networks will exhibit at the 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA. Niagara Networks offers the highest port-density systems, and the most complete Next-Generation Network Visibility systems including Network Packet Brokers, Bypass Switches, and Network TAPs.
Oct. 26, 2016 01:15 PM EDT Reads: 1,413