Welcome to Android Design Patterns and Best Practice, a comprehensive guide to how to get
the most out of your apps with the tried and tested programming philosophy, design patterns.
These patterns provide a logical and elegant approach to solving many of the development
problems that coders face. These patterns act as a guide creating a clear path from problem to
solution, and although applying a design pattern does not guarantee best practice in itself, it will
hugely assist the process and make the discovery of design flaws far easier. Design patterns can
be implemented on very many platforms and written in as many programming languages. Some
code libraries even apply patterns as part of their internal mechanics, and many readers will
already be familiar with the Java Observer and Observable classes. The Android SDK we will
be exploring makes great use of many patterns, such as factories, builders and listeners (which
are really just observer patterns). Although we will cover these built-in design patterns, the book
will mostly explore how we can build our own, custom made, patterns and apply them to Android
development. Rather than approach each design pattern in turn, this book approaches the subject
from the perspective of a developer, moving through each aspect of app development exploring
individual design patterns as they would arise in the course of building an Android app. To
clarify this journey, we will be focusing on a single imaginary app, designed to support a small
business. This will take us from application conception through to publication, covering such
topics as UI design, internal logic and user interaction along the way. During each of these steps
we will explore those design patterns that are relevant to that process, by first exploring the
pattern in its abstract form and then applying it to that particular situation. By the end of the book
you will have learned how design patterns can be applied to all aspects of Android development
and how using them assists best practice. It is the concept of design patterns that is more
important than any specific pattern itself. Patterns can, and should, be adapted to suit our specific
purposes, and by learning this way of approaching app development, we can even go on to create
entirely original patterns of our own.