Design Patterns

Design pattern in android

Embed Size (px)

Citation preview

Page 1: Design pattern in android

Design Patterns

Page 2: Design pattern in android

Design Pattern

• A design pattern is just a convenient way of reusing object-oriented (OO) code between projects and programmers. A common pattern in early literature on programming frameworks is Model-View-Controller (MVC) for Smalltalk [Krasner and Pope, 1988], which divides the user interface problem into three parts.

Page 3: Design pattern in android

Design Pattern Definitions

1. Design patterns are recurring solutions to design problems you see over and over.

2. Design patterns constitute a set of rules describing how to accomplish certain tasks in the realm of software development.

3. Design patterns focus more on reuse of recurring architectural design themes, while frameworks focus on detailed design... and implementation

4. A pattern addresses a recurring design problem that arises in specific design situations and presents a solution to it.

5. Patterns identify and specify abstractions the at are above the level of single classes and instances, or of components.

6. Design patterns are not just about the design of objects; they are also about interaction between objects. One possible view of some of these patterns is to consider them as communication patterns

Page 4: Design pattern in android

Design Pattern Continue

• The design patterns divides into three types: • Creational patterns: create objects for you, rather than your having

to instantiate objects directly. Your program gains more flexibility in deciding which objects need to be created for a given case. • Structural patterns: help you compose groups of objects into larger

structures, such as complex user interfaces and accounting data. • Behavioral patterns: help you to define the communication between

objects in your system and how the flow is controlled in a complex program.

Page 5: Design pattern in android

Creational Pattern

1.Singleton2.Factory3.Factory Method4.Abstract Factory5.Builder6.Prototype7.Object Pool

• Structural patterns


• Behavioral patterns:1. Chain of Responsibility

2. Command

3. Interpreter

4. Iterator

5. Mediator

6. Memento

7. Observer

8. Strategy

9. Template Method


11.Null Object

Division Of Design pattern

Page 6: Design pattern in android

Design Pattern use in Android

Three most common Design Patterns use in Android

1)MVC (Model View Controller)

2)MVP (Model View Presenter)

3)MVVM (Model-View-View Model)

Page 7: Design pattern in android

MVC (Model View Control)

1. Data Model, which contains the computational parts of the program 2. View, which presents the user interface 3. Controller, which interacts between the user and the view

4. Each aspect of the problem is a separate object , and each has its own rules for managing its data.

5. Communication between the user, the graphical user interface ( GUI), and the data should be carefully controlled

Page 8: Design pattern in android

Model View Controller for Android

• Controllers are the activities themselves which contain all the business logic done in the application.

• Models are our entities which describe the components of our apps.

• Views can be done in XML layouts.

Page 9: Design pattern in android
Page 10: Design pattern in android

MVP (Model View Presenter)

Most Important Design Patter

• The MVP pattern allows separate the presentation layer from the logic.

• Model-View-Presenter pattern is a perfect fit for android development. Since the Views role in this pattern are:

serving as a entry point rendering components routing user events to the presenter

Page 11: Design pattern in android

MVP (Model View Presenter)Most Important Design Patter in Android

The presenterThe presenter is responsible to act as the middle man between view and model. It retrieves data from the model and returns it formatted to the view.

The ViewThe view, usually implemented by an Activity (it may be a Fragment, a View… depending on how the app is structured), will contain a reference to the presenter. The only thing that the view will do is calling a method from the presenter every time there is an interface action (a button click for example).

The modelIn an application with a good layered architecture, this model would only be the gateway to the domain layer or business logic.

Page 12: Design pattern in android
Page 13: Design pattern in android

Difference B/w MVC & MVP


UI Presentation Pattern focus on separation of view with Model

Based on MVC (UI Presentation Pattern)

Separation of responsibility between three components:

1.View - responsible for rendering UI elements2.Controller - responsible for responding to view actions3.Model - responsible for business behavior and state management

Separation of responsibility between four components:

1.View - responsible for rendering UI elements2.View Interface - responsible for loose coupling between view and model3.Presenter - responsible for view and model interaction4.Model - responsible for business behavior and state management

Page 14: Design pattern in android

Difference B/w MVC & MVP Continue


Fairly loose coupling Comparatively high degree of loose coupling

Limited unit testing Comparatively high degree of ease of unit testing

Controller is behavior based and multiple views can share single controller

Usually one view has one presenter (1-1 mapping). Multiple presenters would be associated with a complex view

Identifies which view to update Presenter will update its associated view

Page 15: Design pattern in android
Page 16: Design pattern in android

The Following Android Classes uses Design Patterns

1) View Holder uses Singleton Design Pattern2) Intent uses Factory Design Pattern3) Adapter uses Adapter Design Pattern4) Broadcast Receiver uses Observer Design Pattern5) View uses Composite Design Pattern6) Media FrameWork uses Façade Design Pattern

Page 17: Design pattern in android

Creational Patterns

Page 18: Design pattern in android

Singleton Pattern

• Sometimes it's important to have only one instance for a class. For example, in a system there should be only one window manager (or only a file system or only a print spooler). Usually singletons are used for centralized management of internal or external resources and they provide a global point of access to themselves.

• The singleton pattern is one of the simplest design patterns: it involves only one class which is responsible to instantiate itself, to make sure it creates not more than one instance; in the same time it provides a global point of access to that instance. In this case the same instance can be used from everywhere, being impossible to invoke directly the constructor each time.

Page 19: Design pattern in android

1st Way

• class Singleton

• {

• private static Singleton instance;

• private Singleton() { }

• public static synchronized Singleton getInstance()

• {

• if (instance == null)

• instance = new Singleton();

• return instance;

• }

• public void doSomething() { }

• }

2nd Way

• class Singleton• {• private static Singleton instance = new

Singleton();• private Singleton()• {• ...• }• public static synchronized Singleton getInstance()• {• return instance;• }• public void doSomething()• {• ...• }• }

Page 20: Design pattern in android

Factory Pattern

• When a interface does not know which sub-class of objects initilize it

Page 21: Design pattern in android

Factory Pattern example 2

Page 22: Design pattern in android

Structural Patterns

Page 23: Design pattern in android

Adapter Design Pattern

• The adapter pattern is adapting between classes and objects. Like any adapter in the real world it is used to be an interface, a bridge between two objects.

• it's used to identifying a simple way to realize relationships between entities.

• The main use of this pattern is when a class that you need to use doesn't meet the requirements of an interface.

Page 24: Design pattern in android
Page 25: Design pattern in android

Composite Design Pattern

• Composite pattern is used where we need to treat a group of objects in similar way as a single object. Composite pattern composes objects in term of a tree structure to represent part as well as whole hierarchy • This pattern creates a class contains group of its own objects. This

class provides ways to modify its group of same objects

Page 26: Design pattern in android
Page 27: Design pattern in android

Behavioral patterns

Page 28: Design pattern in android

Observer Design Pattern

Observer pattern is one of the behavioral design pattern Observer design pattern is useful when you are interested in the state of an object and want to get notified whenever there is any change In observer pattern, the object that watch on the state of another object are called Observer and the object that is being watched is called Subject

Page 29: Design pattern in android