SlideShare a Scribd company logo
1 of 104
Download to read offline
the curious case of
DESIGN
PATTERNS
LET’S TALK
BRIDGES
golden gate
bridge
PROPERTIES OF AN AWESOME BRIDGE
1. BE BIG
2. BE BEAUTIFUL
3. LET THOSE CARS PASS
4. FOLLOW THE DESIGN GUIDELINES
EACH
BRIDGE
IS
DIFFERENT
YET,
THEY ALL
ARE
SAME
NOTICE A
PATTERN?
All bridges in the world
can be categorized into
one of the four types.
or a combination of two
Engineering
is old.
It has matured over the years.
PYRAMIDS SKYSCRAPERS
THE FIRST
ROLLS ROYCE
WHEN BRIDGEMAKING
FAILS
WHEN SOFTWARE
FAILS?
interfaces
abstract classes
concrete classes
A design pattern is a general
reusable solution to a
commonly occurring problem
within a given context in
software design.
ERICH GAMMA
RICHARD HELM RALPH JOHNSON
JOHN VLISSIDES
the design pattern catalogue
singleton
factory method
prototype
abstract factory
builder
chain of
responsibility
command
interpreter
iteratormediator
memento
observer
state
strategy
template method
visitor
adapter
bridge
composite
decorator
façade
flyweight
proxy
singleton
INTENT
ENSURE THAT A CLASS HAS ONLY
ONE INSTANCE, AND PROVIDE A
GLOBAL POINT OF ACCESS TO IT.
WHEN TO USE
1. ONLY ONE INSTANCE OF CLASS IS REQUIRED
2. MUST BE A SINGLE ACCESS POINT
3. NEED TO MANAGE OBJECT INSTANCES
USE CASES
1. MULTIPLE OS WINDOWS : ONE WINDOW MANAGER
2. MULTIPLE PRINT JOBS : ONE PRINT SPOOLER
3. MULTIPLE FILES : ONE FILE MANAGER
4. ONE CONFIGURATION OBJECT ACROSS APPLICATION
How about
global variables?
THE PROBLEMS OF BEING GLOBAL
NAMESPACE POLLUTION
NO ACCESS CONTROL
UNCERTAIN INITIALIZATION ORDER
CLASS DIAGRAM
Singleton
public static getInstance()
public String getData()
public singletonOperation()
private Singleton instance
private String singletonData
<code/>
factory method
INTENT
DEFINE AN INTERFACE FOR
CREATING AN OBJECT, BUT LET
SUBCLASSES DECIDE WHICH CLASS
TO INSTANTIATE.
new
IS AN EVIL THING
UNDERSTANDING THROUGH PIZZAS
Pizza orderPizza()
{
Pizza pizza = new Pizza();
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.pack();
return pizza;
}
one type of
pizza only??
Pizza orderPizza()
{
Pizza pizza = new CheesePizza();
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.pack();
return pizza;
}
UNDERSTANDING THROUGH PIZZAS
what if you want
a pepperoni?
Pizza orderPizza (String type)
{
Pizza pizza;
if (type.equals(“cheese”))
pizza = new CheesePizza();
if (type.equals(“pepperoni”))
pizza = new PepperoniPizza();
if (type.equals(“greek”))
pizza = new GreekPizza();
UNDERSTANDING THROUGH PIZZAS
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.pack();
return pizza;
}
ENCAPSULATION GOODNESS
class PizzaFactory
{
public static Pizza create (String type)
{
switch (type)
{
case “cheese”: return new CheesePizza(); break;
case “greek”: return new GreekPizza(); break;
case “pepperoni”: return new PepperoniPizza();
}
}
}
SIMPLIFIED PIZZA ORDERS
Pizza orderPizza (String type)
{
Pizza pizza = PizzaFactory.create (type);
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.pack();
return pizza;
}
CLASS DIAGRAM
Factory
public Product factoryMethod()
public void anOperation()
<<Product>>
ConcreteProduct
ConcreteFactory
public Product factoryMethod()
public static void code
abstract factory
INTENT
PROVIDE AN INTERFACE FOR
CREATING FAMILIES OF RELATED
OBJECTS, WITHOUT SPECIFYING
THEIR CONCRETE CLASSES.
Depend upon abstractions.
Do not depend upon
concrete classes.
MAKING A PIZZA FROM SCRATCH
public abstract class Pizza
{
public Dough dough;
public Sauce sauce;
public Cheese cheese;
}
MAKING A PIZZA FROM SCRATCH
public class DominosCheesePizza extends Pizza
{
this.dough = new CheeseBurstDough();
this.sauce = new TomatoSauce();
this.cheese = new ParmesanCheese();
}
public class PizzaHutCheesePizza extends Pizza
{
this.dough = new ThinCrustDough();
this.sauce = new PlumTomatoSauce();
this.cheese = new MozarellaCheese();
}
MAKING A PIZZA FROM SCRATCH
ORDERING FROM MULTIPLE STORES
public Pizza createPizza (String store, String type)
{
if (store.equals(“Dominos”)
if (type.equals(“Cheese”)
return new DominosCheesePizza();
if (store.equals(“PizzaHut”)
if (type.equals(“Cheese”)
return new PizzaHutCheesePizza();
}
BUT THE ONLY
DIFFERENCE IS THE
INGREDIENTS!
HERE COMES THE FACTORY
public abstract class IngredientFactory
{
public Dough createDough();
public Sauce createSauce();
public Cheese createCheese();
}
HERE COMES THE FACTORY
public class DominosIngredientFactory
extends IngredientFactory {
public Dough createDough() {
return new CheeseBurstDough();
}
public Sauce createSauce() {
return new TomatoSauce();
} public Cheese createCheese() {
return new ParmesanCheese();
}
}
HERE COMES THE FACTORY
public class PizzaHutIngredientFactory
extends IngredientFactory {
public Dough createDough() {
return new ThinCrustDough();
}
public Sauce createSauce() {
return new PlumTomatoSauce();
} public Cheese createCheese() {
return new MozarellaCheese();
}
}
public abstract class Pizza
{
Dough dough;
Sauce sauce;
Cheese cheese;
}
NO CHANGE TO OUR PIZZA
public class CheesePizza extends Pizza
{
public CheesePizza (IngredientFactory factory)
{
this.dough = factory.createDough();
this.sauce = factory.createSauce();
this.cheese = factory.createCheese();
}
}
PUTTING IT ALL TOGETHER
PUTTING IT ALL TOGETHER
public Pizza createPizza (
IngredientFactory factory,
String type)
{
if (type.equals(“Cheese”)
return new CheesePizza(factory);
}
REMEMBER PIZZA FACTORY?
public Pizza createPizza (
IngredientFactory factory,
String type)
{
return PizzaFactory.create(type, factory);
}
boolean code = true;
prototype
INTENT
SPECIFY THE KINDS OF OBJECTS TO
CREATE USING A PROTOTYPICAL
INSTANCE, AND CREATE NEW OBJECTS
BY COPYING THIS PROTOTYPE.
OBJECT CREATION
CAN BE EXPENSIVE
database queries…
data over a network…
3rd party service…
expensive calculations…
database queries…
data over a network…
3rd party service…
expensive calculations…
BACK TO PIZZAS!
public abstract class Pizza
{
Dough dough;
Sauce sauce;
Cheese cheese;
}
BACK TO PIZZAS!
public class BasicCheesePizza extends Pizza
{
public BasicCheesePizza (
IngredientFactory factory)
{
this.dough = factory.createDough();
this.sauce = factory.createSauce();
this.cheese = factory.createCheese();
}
}
BACK TO PIZZAS!
public class BasicGreekPizza extends Pizza
{
public BasicGreekPizza (
GreekIngredientFactory factory)
{
this.dough = factory.createDough();
this.sauce = factory.createSauce();
this.cheese = factory.createCheese();
}
}
A PIZZA REGISTRY
public class PizzaRegistry {
private static Map<String, Pizza> basicPizzas;
static {
basicPizzas = new HashMap<String, Pizza>();
basicPizzas.add (“Cheese”,
new BasicCheesePizza(cheeseFactory);
basicPizzas.add (“Greek”,
new BasicGreekPizza(greekFactory);
}
…
}
A PIZZA REGISTRY
public class PizzaRegistry {
…
public static Pizza getPizza (string type)
{
Pizza pizza = basicPizzas.get(type);
return (Pizza) pizza.clone();
}
}
TIME TO ADD TOPPINGS
public class CheesePizza {
private Pizza pizza = null;
public buildPizza (Toppings[] toppings) {
pizza = PizzaRegistry.get(“Cheese);
// add your toppings here
}
}
Console.Write(“code”);
façade
INTENT
PROVIDE A UNIFIED INTERFACE TO A
SET OF INTERFACES IN A SUBSYSTEM,
IN ORDER TO MAKE THE SUBSYSTEM
EASIER TO USE.
HOME THEATRE COMPONENTS
TELEVISION
DVD PLAYER
FM TUNER
AMPLIFIER
SET TOP BOX
Video Out
Audio Out
SPEAKERS
WATCHING A MOVIE
TURN ON THE TV
SET AMLIPIFIER INPUT = DVD
TURN ON THE AMPLIFIER
TURN ON THE DVD PLAYER
SET TV TO WIDESCREEN MODE
SET AMLIPIFIER TO SURROUND SOUND
PLAY THE DVD
WATCHING A MOVIE, CONTD.
television.on()
amplifier.input = DVD;
amplifier.on()
dvdPlayer.on();
television.widescreen = true;
amplifier.soundMode = surround;
dvdPlayer.playDVD();
too many
commands for a
simple operation!!
How about
A SINGLE BUTTON
PLAY MOVIE
WHAT WE HAVE CURRENTLY
interface Television { … }
interface Amplifier { … }
interface Speakers { … }
interface SetTopBox { … }
interface FMTuner { … }
interface DVDPlayer { … }
FAÇADE TO THE RESCUE
class HomeTheatreFacade {
Television tv;
Amplifier amp;
DVDPlayer dvd;
FMTuner fm;
SetTopBox stb;
Speaker speaker;
}
class HomeTheatreFacade {
…
public HomeTheatreFacade (Television tv …) {
this.tv = tv;
this.amp = amp;
this.dvd = dvd;
…
}
}
FAÇADE TO THE RESCUE
class HomeTheatreFacade {
…
public void playMovie() {
tv.on();
tv.widescreen = true;
amp.on();
amp.input = dvd;
FAÇADE TO THE RESCUE
amp.soundMode = surround;
dvd.on();
dvd.playDVD();
}
}
Single Button!
System.out.print (“code”);
data access layer
INTENT
PROVIDE IN THE APPLICATION A
SINGLE INTERFACE TO ACCESS THE
UNDERLYING PERSISTENCE
MECHANISM, LIKE A DATABASE.
DATA ACCESS CODE BOILERPLATE
REGISTER THE DRIVER
EXTRACT DATA FROM RESULTSET
EXECUTE A QUERY
OPEN A CONNECTION
CLEAN UP THE ENVIRONMENT
LET US ENCAPSULATE
class MySqlDataAccess {
public List<?> select (String query) {
// register driver
// open connection
// execute select query
// extract data
// clean up
}
}
LET US ENCAPSULATE
class MySqlDataAccess {
public Boolean insert (String query) {
// register driver
// open connection
// execute insert query
// extract data
// clean up
}
}
EXPENSIVE OPERATIONS
REGISTER THE DRIVER
EXTRACT DATA FROM RESULTSET
EXECUTE A QUERY
OPEN A CONNECTION
CLEAN UP THE ENVIRONMENT
SINGLETON TO THE RESCUE
class MySqlDataAccess {
private static Connection conn = null;
static {
Class.forName(“com.mysql.jdbc.Driver”);
conn = DriverManager.getConnection(
“db_url”,“username”, “password”);
}
…
}
SINGLETON TO THE RESCUE
class MySqlDataAccess {
…
public List<?> select (String query) {
// register driver
// open connection
// execute select query
// extract data
// clean up
}
}
SINGLETON TO THE RESCUE
class MySqlDataAccess {
…
finalize() {
try {
conn.close();
} finally {
super.finalize();
}
}
}
data access object
INTENT
SEPARATE LOW-LEVEL DATA
ACCESSING API / OPERATIONS FROM
HIGH-LEVEL BUSINESS SERVICES, TO
MAKE THE UNDERLYING PERSISTENCE
MECHANISM AN ABSTRACTION.
never pass on data
always pass on objects
database is best kept a secret
WITH NO DAO
CLIENT DAL DATA
WITH NO DAO
CLIENT DAL DATA
UNSTRUCTURED
DATA PASSED
VENDOR
LOCK-INNO TYPE-SAFETY IN DATA
WITH DAO
CLIENT
DATA
OBJECT
DAL DATA
CHINESE WALL!
WITH DAO
CLIENT
DATA
OBJECT
DAL1 DATA1
DAL2 DATA2
PEOPLE ARE EVERYWHERE
class Person {
public String firstName;
public String lastName;
public String address;
public int age;
}
PEOPLE ARE EVERYWHERE
class PersonDAO {
private static DAL = new MySqlDal();
public Person getByFirstName (
String firstName) {
String query = “SELECT * FROM people
WHERE firstName = ” +
firstName;
…
}
}
PEOPLE ARE EVERYWHERE
public Person getByFirstName (
String firstName) {
…
Map<?,?> result = DAL.select(query);
Person p = /* create from result */;
return p;
}
YOU SHOULD USE A
DAL FACTORY
INSIDE THE DAO
PRINT code
model-view-
controller
INTENT
SEPARATE THE PRESENTATION LAYER,
THE BUSINESS LOGIC, AND THE DATA
MODEL OF A CLIENT-SERVER
APPLICATION.
HOW THE COMPONENTS INTERACT
model
CONTROLLERVIEW
HOW THE COMPONENTS INTERACT
FACEBOOK.COM
FACEBOOK SERVER
NEWSFEED
CONTROLLER
NEWSFEED DAO
MYSQL DAL
NEWSFEED VIEW
GENERATED HTML
HOW THE COMPONENTS INTERACT
FACEBOOK.COM
FACEBOOK SERVER
NEWSFEED
CONTROLLER
NEWSFEED DAO
MYSQL DAL
NEWSFEED VIEW
GENERATED HTML
MVC FRAMEWORKS
spring framework
asp.net mvc
codeigniter, cakephp…
backbone, ember, angular…
Design patterns

More Related Content

Similar to Design patterns

My way to clean android - Android day salamanca edition
My way to clean android - Android day salamanca editionMy way to clean android - Android day salamanca edition
My way to clean android - Android day salamanca editionChristian Panadero
 
Introduction to cdi given at java one 2014
Introduction to cdi given at java one 2014Introduction to cdi given at java one 2014
Introduction to cdi given at java one 2014Antoine Sabot-Durand
 
Scala101, first steps with Scala
Scala101, first steps with ScalaScala101, first steps with Scala
Scala101, first steps with ScalaGiampaolo Trapasso
 
Presentation on design pattern software project lll
 Presentation on design pattern  software project lll  Presentation on design pattern  software project lll
Presentation on design pattern software project lll Uchiha Shahin
 
Annotation processor and compiler plugin
Annotation processor and compiler pluginAnnotation processor and compiler plugin
Annotation processor and compiler pluginOleksandr Radchykov
 
APAC Webinar: Say Hello To Xamarin.Forms
APAC Webinar: Say Hello To Xamarin.FormsAPAC Webinar: Say Hello To Xamarin.Forms
APAC Webinar: Say Hello To Xamarin.FormsNish Anil
 
Microservices Chaos Testing at Jet
Microservices Chaos Testing at JetMicroservices Chaos Testing at Jet
Microservices Chaos Testing at JetC4Media
 
Weiterentwicklung von APIs inder Praxis
Weiterentwicklung von APIs inder PraxisWeiterentwicklung von APIs inder Praxis
Weiterentwicklung von APIs inder PraxisOPEN KNOWLEDGE GmbH
 
Guice tutorial
Guice tutorialGuice tutorial
Guice tutorialAnh Quân
 
Abwärtskompatible APIs in der Praxis
Abwärtskompatible APIs in der PraxisAbwärtskompatible APIs in der Praxis
Abwärtskompatible APIs in der PraxisOPEN KNOWLEDGE GmbH
 

Similar to Design patterns (20)

My way to clean android - Android day salamanca edition
My way to clean android - Android day salamanca editionMy way to clean android - Android day salamanca edition
My way to clean android - Android day salamanca edition
 
Introduction to TypeScript
Introduction to TypeScriptIntroduction to TypeScript
Introduction to TypeScript
 
Introduction to cdi given at java one 2014
Introduction to cdi given at java one 2014Introduction to cdi given at java one 2014
Introduction to cdi given at java one 2014
 
Java day 2016.pptx
Java day 2016.pptxJava day 2016.pptx
Java day 2016.pptx
 
Scala, just a better java?
Scala, just a better java?Scala, just a better java?
Scala, just a better java?
 
Scala101, first steps with Scala
Scala101, first steps with ScalaScala101, first steps with Scala
Scala101, first steps with Scala
 
Abstract factory
Abstract factoryAbstract factory
Abstract factory
 
Factory Pattern
Factory PatternFactory Pattern
Factory Pattern
 
Presentation on design pattern software project lll
 Presentation on design pattern  software project lll  Presentation on design pattern  software project lll
Presentation on design pattern software project lll
 
Annotation processor and compiler plugin
Annotation processor and compiler pluginAnnotation processor and compiler plugin
Annotation processor and compiler plugin
 
APAC Webinar: Say Hello To Xamarin.Forms
APAC Webinar: Say Hello To Xamarin.FormsAPAC Webinar: Say Hello To Xamarin.Forms
APAC Webinar: Say Hello To Xamarin.Forms
 
Devoxx 2012 (v2)
Devoxx 2012 (v2)Devoxx 2012 (v2)
Devoxx 2012 (v2)
 
Microservices Chaos Testing at Jet
Microservices Chaos Testing at JetMicroservices Chaos Testing at Jet
Microservices Chaos Testing at Jet
 
Android workshop
Android workshopAndroid workshop
Android workshop
 
Weiterentwicklung von APIs inder Praxis
Weiterentwicklung von APIs inder PraxisWeiterentwicklung von APIs inder Praxis
Weiterentwicklung von APIs inder Praxis
 
Introduction to CDI
Introduction to CDIIntroduction to CDI
Introduction to CDI
 
Google GIN
Google GINGoogle GIN
Google GIN
 
Guice tutorial
Guice tutorialGuice tutorial
Guice tutorial
 
Abwärtskompatible APIs in der Praxis
Abwärtskompatible APIs in der PraxisAbwärtskompatible APIs in der Praxis
Abwärtskompatible APIs in der Praxis
 
Popup view on Mortar
Popup view on MortarPopup view on Mortar
Popup view on Mortar
 

Recently uploaded

Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 

Recently uploaded (20)

Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 

Design patterns