introduction to advance design & coding
TRANSCRIPT
Dinuka Malalanayake
https://malalanayake.wordpress.com/
Dinuka MalalanayakeIntegration Team Lead
FHLB Des Moines Mobile : (515) 509-1072 Office : (515) 281-1164
[email protected] [email protected]
1
Introduction to advance design & coding “Software Design Patterns”
Dinuka Malalanayake
https://malalanayake.wordpress.com/
• ?
• Advantages & Disadvantages
• OO Programming
• Principals of OO Design
• Challenges
2
Agenda
Dinuka Malalanayake
https://malalanayake.wordpress.com/
?
3
• Advance coding is not writing complicated business logics. It is writing the stable code to archive the business goals with extensibility, maintainability, reusability.. etc.
• Design patterns are solutions to general problems that software developers faced during software development • Creational Patterns
• Structural Patterns
• Behavioral Patterns
• Java EE Patterns
Dinuka Malalanayake
https://malalanayake.wordpress.com/
Advantages & Disadvantages
4
• Advantages -
• Tool for effective communication
• Enhance code readability
• Disadvantages -
• Increasing the amount of code
• More Indirection code execution
Dinuka Malalanayake
https://malalanayake.wordpress.com/
OO Programming
5
• Encapsulation
• Abstraction
• Polymorphisms
• Inheritance
• Delegation
• Composition
• Aggregation
Dinuka Malalanayake
https://malalanayake.wordpress.com/
• S – Single-responsibility principle
• O – Open-close principle
• L – Liskov's substitution principle
• I – Interface segregation principle
• D – Dependency Inversion principle
6
Principals of OO Design
Dinuka Malalanayake
https://malalanayake.wordpress.com/ 7
Single-responsibility principle
• A class should have only one reason to change
• Sample code >
• Improved sample code >
Dinuka Malalanayake
https://malalanayake.wordpress.com/
• Open for extension but closed for modifications
• Sample code >
• Improved sample code >
8
Open-close principle
Dinuka Malalanayake
https://malalanayake.wordpress.com/
• Derived types must be completely substitutable for their base types.
• Sample code >
• Improved sample code >
9
Liskov's substitution principle
Dinuka Malalanayake
https://malalanayake.wordpress.com/
• Clients should not be forced to depend upon interfaces that they don't use.
• Sample code >
• Improved sample code >
10
Interface segregation principle
Dinuka Malalanayake
https://malalanayake.wordpress.com/
• High-level modules should not depend on low-level modules. Both should depend on abstractions.
• Sample code >
• Improved sample code >
11
Dependency Inversion principle