SlideShare a Scribd company logo
1 of 84
Download to read offline
www.luxoft.com
REINVENTING DESIGN PATTERNS
WITH JAVA8
Alexander Pashynskiy
Java Day 2016
www.luxoft.com
About me:
•  Lead Software Engineer in Luxoft
•  More then 6 years experience in Java
•  Agile and Lean practicioner
•  Pragmatic and product oriented engineer
•  Still learning and learn
Email: hunter041@gmail.com
Twitter: @apashinskiy_cv
Alexander Pashinskiy
www.luxoft.com
It’s my own experience…
Disclaimer
www.luxoft.com
https://github.com/hunter1041/design-patterns
Samples:
www.luxoft.com
Design Patterns
www.luxoft.com
www.luxoft.com
www.luxoft.com
Not only
www.luxoft.com
Not only
Many, many more ...
www.luxoft.com
•  OOP (Resource acquisition is initialization, Servant,
DI, Pool Objects, Null object …)
•  FP (Functions, Monads, Lenz, Curring, …)
•  Concurrency (Double-checked locking, Read-write
lock, Thread-specific storage, …)
•  Domain Specific (security, money, …)
•  and many, many more
www.luxoft.com
•  Problem - Solution pairs
•  Similar (or same) solution - different intention (Strategy,
State …)
•  inheritance - composition game (OOP)
•  Adding level of indirection
•  Almost always trade-off
Design Patterns:
www.luxoft.com
•  1994 year
•  For C++
•  OOP
Two main principles:
•  "Program to an interface, not an implementation."
•  "Favor object composition over class inheritance."
Sad:(
Some GoF patterns do not stick to this principles
www.luxoft.com
Evolution
www.luxoft.com
Lambda -> lightwaight design tool
www.luxoft.com
Template method
www.luxoft.com
Template method
Type: behavioral
Definition: Define the skeleton of an
algorithm in an operation, deferring
some steps to subclasses. Template
Method lets subclasses redefine
certain steps of an algorithm without
changing the algorithm's structure.
www.luxoft.com
•  Not only for data
•  BLSP
•  Violates “Single Responsibility” and encapsulation
•  High Coupling
•  Future behavior and frameworks inhereted
•  Broken “protected” in Java
•  Big hierarchy produces hell
Inheritance
www.luxoft.com
Template method
•  Inheritance is evil
•  Use composition
•  Part of an algorithm can be passed as a function
•  Utilize basic functional interfaces
•  Use function composition if possible
www.luxoft.com
Template method
inheritance -> composition -> function composition
www.luxoft.com
Template method
g.filterMailBox(f)
* Not strongly mathematical composition (contains ‘if’ logic)
www.luxoft.com
Template method
www.luxoft.com
Decorator
www.luxoft.com
Decorator
Type: structural
Definition: Attach additional
responsibilities to an object
dynamically. Decorators provide a
flexible alternative to subclassing for
extending functionality.
www.luxoft.com
Decorator
just a function composition
g.andThen(f)
www.luxoft.com
Decorator
www.luxoft.com
Chain of Responsibility
www.luxoft.com
Chain of Responsibility
Type: behavioral
Definition: Avoid coupling the sender
of a request to its receiver by giving
more than one object a chance to
handle the request. Chain the receiving
objects and pass the request along the
chain until an object handles it.
www.luxoft.com
Chain of Responsibility
chain of function composition
andThen andThen andThen andThen andThen
www.luxoft.com
Chain of Responsibility
www.luxoft.com
Adapter
www.luxoft.com
Adapter
Type: structural
Definition: Convert the interface of a
class into another interface clients
expect. Adapter lets classes work
together that couldn't otherwise
because of incompatible interfaces.
www.luxoft.com
Adapter
•  Utilise basic functional interfaces
•  Functional interfaces are interchangable
•  For different numbers of parameters - partially applied
function
www.luxoft.com
Partially applied function
IntBinaryOperator add = (x, y) -> x + y ;
IntUnaryOperator add5 = x -> add.applyAsInt(x, 5);
Partial application - process of transforming a
function into a function with less parameters.
www.luxoft.com
Partially applied function
Supported by java - :: operator
ToIntFunctiont<String> stringLength = String::length;
IntFunction<String> helloSubstring = "hello"::substring;
www.luxoft.com
Partial application
•  allows to set some (not all) parameters
•  let the other parameters to be set later
•  partially applied function can be reused and
composed
•  Powerful decoupling tool
www.luxoft.com
Adapter
www.luxoft.com
Proxy
www.luxoft.com
Proxy
Type: structural
Definition: Provide a surrogate or
placeholder for another object to
control access to it.
www.luxoft.com
Proxy
•  Resource managing
•  Transactions
•  Logging
•  and more ...
www.luxoft.com
Libs to create Proxy
•  java.lang.reflect.Proxy
•  Byte Buddy
•  cglib
•  javassist
www.luxoft.com
Proxy
•  function composition
•  wrap a lambda
•  inverse of control – resource leasing
www.luxoft.com
Proxy
www.luxoft.com
Proxy
www.luxoft.com
Strategy
www.luxoft.com
Strategy
Type: behavioral
Definition: Define a family of
algorithms, encapsulate each one, and
make them interchangeable. Strategy
lets the algorithm vary independently
from clients that use it.
www.luxoft.com
Strategy
library of classes -> library of functions
www.luxoft.com
Strategy
www.luxoft.com
Iterator
www.luxoft.com
Iterator
Type: behavioral
Definition: Provide a way to access
the elements of an aggregate objects
equentially without exposing its
underlying representation.
www.luxoft.com
Iterator
external iterator -> internal iterator
www.luxoft.com
Iterator
•  collections have internal foreach()
•  streams everywhere
•  if not - implement Spliterator
www.luxoft.com
Iterator
www.luxoft.com
Builder
www.luxoft.com
Builder
Type: creational
Definition: Separate the construction
of a complex object from its
representation so that the same
construction process can create
different representations.
www.luxoft.com
Builder
•  classic runtime builder
•  classic reusable builder (a lot of boiler-plate)
•  or just use a consumer if applicable
-  no boiler-plate
-  reusable (function composition)
-  chaining DSL
-  consumer has internal control on objet
www.luxoft.com
Builder
say me how -> I will build as you want
www.luxoft.com
Builder
www.luxoft.com
Function composition
f: a -> b
g: b -> c
h: c -> d
f g h => andThan()° °
www.luxoft.com
Function composition
f: a -> b
g: b -> c
h: c -> d
f g h => andThan()° °
f: a -> Mb
g: b -> Mc
h: c -> Md
Mb – container for b
www.luxoft.com
Function composition
f: a -> b
g: b -> c
h: c -> d
f g h => andThan()° °
f: a -> Mb
g: b -> Mc
h: c -> Md
f g h => flatMap()° °
www.luxoft.com
Monad
www.luxoft.com
Monad
Represents (2 and more) states as a unified
value in order to compose transformations
[User | Error] -> validate1 -> [User | Error] -> validate2 -> [User | Error ] -> get
User Error
User
of
www.luxoft.com
Monad
•  Puts a value in a computational context
www.luxoft.com
Monad
•  Puts a value in a computational context
•  Function composition on steroids
www.luxoft.com
Monad
•  Puts a value in a computational context
•  Function composition on steroids
•  Programmable semicolon
www.luxoft.com
Monad
•  Puts a value in a computational context
•  Function composition on steroids
•  Programmable semicolon
•  Chainable container
www.luxoft.com
Monad
f: a -> Ma
g: a -> Ma
h: a -> Ma
f g h => flatMap° °
Function composition:
f: a -> Mb
g: b -> Mc
h: c -> Md
www.luxoft.com
Monad
interface Monad<A> {
Monad<A> unit(A a);
Monad<B> flatMap(Function<A, Monad<B>> f);
}
www.luxoft.com
Monad
interface Monad<A> {
Monad<A> unit(A a);
Monad<B> flatMap(Function<A, Monad<B>> f);
default Monad<B> map(Function<A, B> f) {
return flatMap(v -> unit(f.apply(v)));
}
}
www.luxoft.com
Monad
interface Monad<A> {
Monad<A> unit(A a);
Monad<B> flatMap(Function<A, Monad<B>> f);
default Monad<B> map(Function<A, B> f) {
return flatMap(v -> unit(f.apply(v)));
}
}
Monad composition
Function application
www.luxoft.com
Monad
•  Hide complexity
•  Encapsulate implementation details
•  Allow composability
•  Increase redability
•  Reduce code duplication
www.luxoft.com
Already in Java 8
•  Optional
•  Stream
•  CompleatableFuture
www.luxoft.com
Monad
www.luxoft.com
Visitor
www.luxoft.com
Visitor
Type: behavioral
Definition: Represent an operation to
be performed on the elements of an
object structure. Visitor lets you define
a new operation without changing the
classes of the elements on which it
operates.
www.luxoft.com
Visitor
•  Rarely used pattern
•  Can be replaced by pattern matching
•  Reuse general implementation
www.luxoft.com
Visitor
interface Visitor<T> {
T visit(Square element);
T visit(Circle element);
T visit(Rectangle element);
}
def visit(e: Element): T = e match {
case Square => do1();
case Circle => do2();
case Rectangle => do3();
}
www.luxoft.com
Visitor
www.luxoft.com
Paradigm shift:
•  object centric -> function centric
•  function composition reduce complexity
•  data to code -> code to data
•  external -> internal (mechanic incapsulation)
www.luxoft.com
•  functions
•  higher order function
•  function composition
•  partially applied functions
•  monads
•  pattern matching
•  …
New Designers Toolbox
www.luxoft.com
Design Patterns
communication tool rather
then implementation guide
www.luxoft.com
“In the book we only tell when to apply pattern, but we
never talk about when to remove a pattern. Removing a
pattern can simplify a system and a simple solution
should almost always win. Coming up with a simple
solutions is the real challenge.”
E.Gamma
www.luxoft.com
•  no silver bullet
•  OOP is alive
•  GoF “Design Patterns” is still valid
•  you just have additional design tools
•  almost always trade-off
•  use your mind
And remember:
www.luxoft.com
Thanks!!!

More Related Content

What's hot

1. Mini seminar intro
1. Mini seminar intro1. Mini seminar intro
1. Mini seminar introLeonid Maslov
 
Design Patterns & JDK Examples
Design Patterns & JDK ExamplesDesign Patterns & JDK Examples
Design Patterns & JDK ExamplesEnder Aydin Orak
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programmingmustafa sarac
 
Creational pattern
Creational patternCreational pattern
Creational patternHimanshu
 
Technical interview questions
Technical interview questionsTechnical interview questions
Technical interview questionsSoba Arjun
 
Improving Software Quality Using Object Oriented Design Principles
Improving Software Quality Using Object Oriented Design PrinciplesImproving Software Quality Using Object Oriented Design Principles
Improving Software Quality Using Object Oriented Design PrinciplesDr. Syed Hassan Amin
 
Structural patterns
Structural patternsStructural patterns
Structural patternsHimanshu
 
Pursuing Domain-Driven Design practices in PHP
Pursuing Domain-Driven Design practices in PHPPursuing Domain-Driven Design practices in PHP
Pursuing Domain-Driven Design practices in PHPGiorgio Sironi
 
Design pattern (Abstract Factory & Singleton)
Design pattern (Abstract Factory & Singleton)Design pattern (Abstract Factory & Singleton)
Design pattern (Abstract Factory & Singleton)paramisoft
 
Java questions for interview
Java questions for interviewJava questions for interview
Java questions for interviewKuntal Bhowmick
 
Java Interview Questions
Java Interview QuestionsJava Interview Questions
Java Interview QuestionsKuntal Bhowmick
 
"SOLID" Object Oriented Design Principles
"SOLID" Object Oriented Design Principles"SOLID" Object Oriented Design Principles
"SOLID" Object Oriented Design PrinciplesSerhiy Oplakanets
 
Java interview-questions-and-answers
Java interview-questions-and-answersJava interview-questions-and-answers
Java interview-questions-and-answersbestonlinetrainers
 
MVC and Entity Framework 4
MVC and Entity Framework 4MVC and Entity Framework 4
MVC and Entity Framework 4James Johnson
 

What's hot (20)

1. Mini seminar intro
1. Mini seminar intro1. Mini seminar intro
1. Mini seminar intro
 
Design Patterns & JDK Examples
Design Patterns & JDK ExamplesDesign Patterns & JDK Examples
Design Patterns & JDK Examples
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
 
Creational pattern
Creational patternCreational pattern
Creational pattern
 
Creational Design Patterns
Creational Design PatternsCreational Design Patterns
Creational Design Patterns
 
Technical interview questions
Technical interview questionsTechnical interview questions
Technical interview questions
 
Improving Software Quality Using Object Oriented Design Principles
Improving Software Quality Using Object Oriented Design PrinciplesImproving Software Quality Using Object Oriented Design Principles
Improving Software Quality Using Object Oriented Design Principles
 
Structural patterns
Structural patternsStructural patterns
Structural patterns
 
Pursuing Domain-Driven Design practices in PHP
Pursuing Domain-Driven Design practices in PHPPursuing Domain-Driven Design practices in PHP
Pursuing Domain-Driven Design practices in PHP
 
Design pattern (Abstract Factory & Singleton)
Design pattern (Abstract Factory & Singleton)Design pattern (Abstract Factory & Singleton)
Design pattern (Abstract Factory & Singleton)
 
Mediator
MediatorMediator
Mediator
 
Java questions for interview
Java questions for interviewJava questions for interview
Java questions for interview
 
Java Interview Questions
Java Interview QuestionsJava Interview Questions
Java Interview Questions
 
Ch11lect1 ud
Ch11lect1 udCh11lect1 ud
Ch11lect1 ud
 
"SOLID" Object Oriented Design Principles
"SOLID" Object Oriented Design Principles"SOLID" Object Oriented Design Principles
"SOLID" Object Oriented Design Principles
 
Java interview-questions-and-answers
Java interview-questions-and-answersJava interview-questions-and-answers
Java interview-questions-and-answers
 
Oops Concepts
Oops ConceptsOops Concepts
Oops Concepts
 
MVC and Entity Framework 4
MVC and Entity Framework 4MVC and Entity Framework 4
MVC and Entity Framework 4
 
Design patterns
Design patternsDesign patterns
Design patterns
 

Similar to Java day2016 "Reinventing design patterns with java 8"

Александр Пашинский "Reinventing Design Patterns with Java 8"
Александр Пашинский "Reinventing Design Patterns with Java 8"Александр Пашинский "Reinventing Design Patterns with Java 8"
Александр Пашинский "Reinventing Design Patterns with Java 8"Anna Shymchenko
 
Why scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with thisWhy scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with thisRuslan Shevchenko
 
Implementing a JavaScript Engine
Implementing a JavaScript EngineImplementing a JavaScript Engine
Implementing a JavaScript EngineKris Mok
 
Contentful with Netgen Layouts workshop
Contentful with Netgen Layouts workshopContentful with Netgen Layouts workshop
Contentful with Netgen Layouts workshopIvo Lukac
 
Gwt and rpc use 2007 1
Gwt and rpc use 2007 1Gwt and rpc use 2007 1
Gwt and rpc use 2007 1Sam Muhanguzi
 
Reactive Web-Applications @ LambdaDays
Reactive Web-Applications @ LambdaDaysReactive Web-Applications @ LambdaDays
Reactive Web-Applications @ LambdaDaysManuel Bernhardt
 
ECMAScript 6: A Better JavaScript for the Ambient Computing Era
ECMAScript 6: A Better JavaScript for the Ambient Computing EraECMAScript 6: A Better JavaScript for the Ambient Computing Era
ECMAScript 6: A Better JavaScript for the Ambient Computing EraAllen Wirfs-Brock
 
Angular - Improve Runtime performance 2019
Angular - Improve Runtime performance 2019Angular - Improve Runtime performance 2019
Angular - Improve Runtime performance 2019Eliran Eliassy
 
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...Codemotion
 
Dmytro Kochergin Angular 2 and New Java Script Technologies
Dmytro Kochergin Angular 2 and New Java Script TechnologiesDmytro Kochergin Angular 2 and New Java Script Technologies
Dmytro Kochergin Angular 2 and New Java Script TechnologiesLogeekNightUkraine
 
Building Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJavaBuilding Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJavaRick Warren
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and ActivatorKevin Webber
 
Writing Asynchronous Programs with Scala & Akka
Writing Asynchronous Programs with Scala & AkkaWriting Asynchronous Programs with Scala & Akka
Writing Asynchronous Programs with Scala & AkkaYardena Meymann
 
React state management with Redux and MobX
React state management with Redux and MobXReact state management with Redux and MobX
React state management with Redux and MobXDarko Kukovec
 

Similar to Java day2016 "Reinventing design patterns with java 8" (20)

Александр Пашинский "Reinventing Design Patterns with Java 8"
Александр Пашинский "Reinventing Design Patterns with Java 8"Александр Пашинский "Reinventing Design Patterns with Java 8"
Александр Пашинский "Reinventing Design Patterns with Java 8"
 
JS Essence
JS EssenceJS Essence
JS Essence
 
Why scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with thisWhy scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with this
 
Liferay (DXP) 7 Tech Meetup for Developers
Liferay (DXP) 7 Tech Meetup for DevelopersLiferay (DXP) 7 Tech Meetup for Developers
Liferay (DXP) 7 Tech Meetup for Developers
 
Implementing a JavaScript Engine
Implementing a JavaScript EngineImplementing a JavaScript Engine
Implementing a JavaScript Engine
 
Angular or React
Angular or ReactAngular or React
Angular or React
 
Contentful with Netgen Layouts workshop
Contentful with Netgen Layouts workshopContentful with Netgen Layouts workshop
Contentful with Netgen Layouts workshop
 
Gwt and rpc use 2007 1
Gwt and rpc use 2007 1Gwt and rpc use 2007 1
Gwt and rpc use 2007 1
 
Reactive Web-Applications @ LambdaDays
Reactive Web-Applications @ LambdaDaysReactive Web-Applications @ LambdaDays
Reactive Web-Applications @ LambdaDays
 
ECMAScript 6: A Better JavaScript for the Ambient Computing Era
ECMAScript 6: A Better JavaScript for the Ambient Computing EraECMAScript 6: A Better JavaScript for the Ambient Computing Era
ECMAScript 6: A Better JavaScript for the Ambient Computing Era
 
Angular - Improve Runtime performance 2019
Angular - Improve Runtime performance 2019Angular - Improve Runtime performance 2019
Angular - Improve Runtime performance 2019
 
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Dmytro Kochergin Angular 2 and New Java Script Technologies
Dmytro Kochergin Angular 2 and New Java Script TechnologiesDmytro Kochergin Angular 2 and New Java Script Technologies
Dmytro Kochergin Angular 2 and New Java Script Technologies
 
Building Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJavaBuilding Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJava
 
[2015/2016] JavaScript
[2015/2016] JavaScript[2015/2016] JavaScript
[2015/2016] JavaScript
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Serverless design with Fn project
Serverless design with Fn projectServerless design with Fn project
Serverless design with Fn project
 
Writing Asynchronous Programs with Scala & Akka
Writing Asynchronous Programs with Scala & AkkaWriting Asynchronous Programs with Scala & Akka
Writing Asynchronous Programs with Scala & Akka
 
React state management with Redux and MobX
React state management with Redux and MobXReact state management with Redux and MobX
React state management with Redux and MobX
 

Recently uploaded

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
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
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.
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
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
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
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
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 

Recently uploaded (20)

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...
 
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...
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
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...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
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
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
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...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 

Java day2016 "Reinventing design patterns with java 8"