The composite pattern is used to create hierarchical, recursive tree structures of related objects where any element of the structure may be accessed and utilised in a standard manner.
Github https://github.com/sergeyleschev/design-patterns
Component
protocol Shape {
func draw(fillColor: String)
}
Leafs
final class Square: Shape {
func draw(fillColor: String) {
print("Drawing a Square with color \(fillColor)")
}
}
final class Circle: Shape {
func draw(fillColor: String) {
print("Drawing a circle with color \(fillColor)")
}
}
Composite
final class Whiteboard: Shape {
private lazy var shapes = [Shape]()
init(_ shapes: Shape...) {
self.shapes = shapes
}
func draw(fillColor: String) {
for shape in self.shapes {
shape.draw(fillColor: fillColor)
}
}
}
Usage:
var whiteboard = Whiteboard(Circle(), Square())
whiteboard.draw(fillColor: "Red")
Sources: Github
Structural
In software engineering, structural design patterns are design patterns that ease the design by identifying a simple way to realize relationships between entities.
Source: wikipedia.org
đ Chain Of Responsibility
đĢ Command Pattern
đļ Interpreter Pattern
đĢ Iterator Pattern
đ Mediator Pattern
đž Memento Pattern
đ Observer Pattern
đ State Pattern
đĄ Strategy Pattern
đ Template Method
đ Visitor Pattern
đ° Abstract Factory
đˇ Builder Pattern
đ Factory Method
đ Monostate Pattern
đ Prototype Pattern
đ Singleton
đ Adapter Pattern
đ Bridge Pattern
đŋ Composite Pattern
đ§ Decorator Pattern
đ Facade Pattern
đ Flyweight Pattern
â Protection Proxy
đŦ Virtual Proxy
Contacts
I have a clear focus on time-to-market and don't prioritize technical debt. And I took part in the Pre-Sale/RFX activity as a System Architect, assessment efforts for Mobile (iOS-Swift, Android-Kotlin), Frontend (React-TypeScript) and Backend (NodeJS-.NET-PHP-Kafka-SQL-NoSQL). And I also formed the work of Pre-Sale as a CTO from Opportunity to Proposal via knowledge transfer to Successful Delivery.
đŠī¸ #startups #management #cto #swift #typescript #database
đ§ Email: sergey.leschev@gmail.com
đ LinkedIn: https://linkedin.com/in/sergeyleschev/
đ LeetCode: https://leetcode.com/sergeyleschev/
đ Twitter: https://twitter.com/sergeyleschev
đ Github: https://github.com/sergeyleschev
đ Website: https://sergeyleschev.github.io
đ Reddit: https://reddit.com/user/sergeyleschev
đ Quora: https://quora.com/sergey-leschev
đ Medium: https://medium.com/@sergeyleschev
đ¨ī¸ PDF Design Patterns: Download
Top comments (0)