🔌 Adapter Pattern
Tags: swift, programming, computerscience, architecture
Published: 2022-12-15 10:09:37


![Adapter Pattern](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tmzpisrw1yskqhghqnas.png)

---

The adapter pattern is used to provide a link between two otherwise incompatible types by wrapping the “adaptee” with a class that supports the interface required by the client.

Github https://github.com/sergeyleschev/design-patterns

**Example**
```swift
protocol NewDeathStarSuperLaserAiming {
    var angleV: Double { get }
    var angleH: Double { get }
}
```
**Adaptee**
```swift
struct OldDeathStarSuperlaserTarget {
    let angleHorizontal: Float
    let angleVertical: Float
    init(angleHorizontal: Float, angleVertical: Float) {
        self.angleHorizontal = angleHorizontal
        self.angleVertical = angleVertical
    }
}
```
**Adapter**
```swift
struct NewDeathStarSuperlaserTarget: NewDeathStarSuperLaserAiming {

    private let target: OldDeathStarSuperlaserTarget

    var angleV: Double {
        return Double(target.angleVertical)
    }

    var angleH: Double {
        return Double(target.angleHorizontal)
    }

    init(_ target: OldDeathStarSuperlaserTarget) {
        self.target = target
    }
}
```
**Usage**
```swift
let target = OldDeathStarSuperlaserTarget(angleHorizontal: 14.0, angleVertical: 12.0)
let newFormat = NewDeathStarSuperlaserTarget(target)

newFormat.angleH
newFormat.angleV
```
Sources: [Github](https://github.com/sergeyleschev/design-patterns/tree/main/Adapter)

> **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](https://en.wikipedia.org/wiki/Structural_pattern)

---

🐝 [Chain Of Responsibility](https://dev.to/sergeyleschev/swift-design-patterns-chain-of-responsibility-4bbd)
👫 [Command Pattern](https://dev.to/sergeyleschev/swift-design-patterns-command-pattern-3044)
🎶 [Interpreter Pattern](https://dev.to/sergeyleschev/swift-design-patterns-interpreter-pattern-390a)
🍫 [Iterator Pattern](https://dev.to/sergeyleschev/swift-design-patterns-iterator-pattern-405o)
💐 [Mediator Pattern](https://dev.to/sergeyleschev/swift-design-patterns-mediator-pattern-4299)
💾 [Memento Pattern](https://dev.to/sergeyleschev/swift-design-patterns-memento-pattern-chp)
👓 [Observer Pattern](https://dev.to/sergeyleschev/swift-design-patterns-observer-pattern-44fc)
🐉 [State Pattern](https://dev.to/sergeyleschev/swift-design-patterns-state-pattern-5ej4)
💡 [Strategy Pattern](https://dev.to/sergeyleschev/swift-design-patterns-strategy-pattern-143c)
📝 [Template Method](https://dev.to/sergeyleschev/swift-design-patterns-template-method-1c2o)
🏃 [Visitor Pattern](https://dev.to/sergeyleschev/swift-design-patterns-visitor-pattern-4hl5)
🌰 [Abstract Factory](https://dev.to/sergeyleschev/swift-design-patterns-abstract-factory-3ppa)
👷 [Builder Pattern](https://dev.to/sergeyleschev/swift-design-patterns-builder-pattern-3609)
🏭 [Factory Method](https://dev.to/sergeyleschev/swift-design-patterns-factory-method-5c6e)
🔂 [Monostate Pattern](https://dev.to/sergeyleschev/swift-design-patterns-monostate-pattern-574i)
🃏 [Prototype Pattern](https://dev.to/sergeyleschev/swift-design-patterns-prototype-pattern-n25)
💍 [Singleton](https://dev.to/sergeyleschev/swift-design-patterns-singleton-3c8b)
🔌 [Adapter Pattern](https://dev.to/sergeyleschev/swift-design-patterns-adapter-pattern-1040)
🌉 [Bridge Pattern](https://dev.to/sergeyleschev/swift-design-patterns-bridge-pattern-1ee2)
🌿 [Composite Pattern](https://dev.to/sergeyleschev/swift-design-patterns-composite-pattern-1koj)
🍧 [Decorator Pattern](https://dev.to/sergeyleschev/swift-design-patterns-decorator-pattern-2c6p)
🎁 [Facade Pattern](https://dev.to/sergeyleschev/swift-design-patterns-facade-pattern-130a)
🍃 [Flyweight Pattern](https://dev.to/sergeyleschev/swift-design-patterns-flyweight-pattern-6ko)
☔ [Protection Proxy](https://dev.to/sergeyleschev/swift-design-patterns-protection-proxy-3kpc)
🍬 [Virtual Proxy](https://dev.to/sergeyleschev/swift-design-patterns-virtual-proxy-2bbg)

---

**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](https://sergeyleschev.github.io/sergeyleschev-design-patterns.pdf)