Skip to main content

Design Patterns

A design pattern provides a general reusable solution for the common problems occurs in software design.
Design Patterns are programming language independent strategies for solving a common problem. that means a design pattern represents an idea, your code more flexible, reusable and maintainable 🍥.


Creational design patterns :

creational design patterns are concerned with the ways of creating an object.

1. Factory Method:
Define an interface or abstract class for creating an object but let the subclasses decide which class to instantiate

2. Abstract Factory:
Define an interface or abstract class for creating families of related (or dependent) objects but without specifying their concrete sub-classes

3. Builder:
Construct a complex object from simple objects using a step-by-step approach

4. Object Pool:
Avoid expensive acquisition and release of resources by recycling objects that are no longer in use

5. Prototype:
A fully initialized instance to be copied or cloned

6. Singleton:
A class of which only a single instance can exist

Structural patterns:

Structural Design Patterns are Design Patterns that ease the design by identifying a simple way to realize relationships between entities.

1. Adapter:
Adapting an interface into another according to client expectation.

2. Bridge:
Separates an object's interface from its implementation.

3. Composite:
Allowing clients to operate on a hierarchy of objects.

4. Decorator:
Add responsibilities to objects dynamically.

5. Facade:
A single class that represents an entire subsystem, Providing an interface to a set of interfaces.

6. Flyweight:
Reusing an object by sharing it.

8. Proxy:
An object representing another object.

Behavioral Design Patterns

Behavioral design patterns are concerned with the interaction and responsibility of objects. the interaction between the objects should be in such a way that they can easily talk to each other and still should be loosely coupled.

1. Chain of responsibility:
A way of passing a request between a chain of objects.

2. Command:
Encapsulate a command request as an object.

3. Interpreter:
A way to include language elements in a program.

4. Iterator:
Sequentially access the elements of a collection.

5. Mediator:
It defines simplified communication between classes.

6. Memento:
Capture and restore an object's internal state.

7. Null Object:
Designed to act as a default value of an object.

8. Observer:
A way of notifying change to a number of classes.

9. State:
Alter an object's behavior when its state changes.

10. Strategy:
Encapsulates an algorithm inside a class.

11. Template method:
Defer the exact steps of an algorithm to a subclass.

12. Visitor:
Defines a new operation to a class without change.

Comments

Popular posts from this blog

Java Loops II print each element of our series as a single line of space-separated values.

We use the integers  ,  , and   to create the following series: You are given   queries in the form of  ,  , and  . For each query, print the series corresponding to the given  ,  , and   values as a single line of   space-separated integers. Input Format The first line contains an integer,  , denoting the number of queries.  Each line   of the   subsequent lines contains three space-separated integers describing the respective  ,  , and   values for that query. Constraints Output Format For each query, print the corresponding series on a new line. Each series must be printed in order as a single line of   space-separated integers. Sample Input 2 0 2 10 5 3 5 Sample Output 2 6 14 30 62 126 254 510 1022 2046 8 14 26 50 98 Explanation We have two queries: We use  ,  , and   to produce some series  : ... and so on. Once we hit  , we print the first ten terms as a single line of space-separate

Java Currency Formatter Solution

Given a  double-precision  number,  , denoting an amount of money, use the  NumberFormat  class'  getCurrencyInstance  method to convert   into the US, Indian, Chinese, and French currency formats. Then print the formatted values as follows: US: formattedPayment India: formattedPayment China: formattedPayment France: formattedPayment where   is   formatted according to the appropriate  Locale 's currency. Note:  India does not have a built-in Locale, so you must  construct one  where the language is  en  (i.e., English). Input Format A single double-precision number denoting  . Constraints Output Format On the first line, print  US: u  where   is   formatted for US currency.  On the second line, print  India: i  where   is   formatted for Indian currency.  On the third line, print  China: c  where   is   formatted for Chinese currency.  On the fourth line, print  France: f , where   is   formatted for French currency. Sample

Java Substring Comparisons

We define the following terms: Lexicographical Order , also known as  alphabetic  or  dictionary  order, orders characters as follows:  For example,  ball < cat ,  dog < dorm ,  Happy < happy ,  Zoo < ball . A  substring  of a string is a contiguous block of characters in the string. For example, the substrings of  abc  are  a ,  b ,  c ,  ab ,  bc , and  abc . Given a string,  , and an integer,  , complete the function so that it finds the lexicographically  smallest  and  largest substrings of length  . Input Format The first line contains a string denoting  . The second line contains an integer denoting  . Constraints  consists of English alphabetic letters only (i.e.,  [a-zA-Z] ). Output Format Return the respective lexicographically smallest and largest substrings as a single newline-separated string. Sample Input 0 welcometojava 3 Sample Output 0 ava wel Explanation 0 S