[swift] Facade 디자인 패턴을 통한 복잡한 시스템 간소화
  1. Facade Design Pattern
  2. Swift Example
  3. Benefits of Using Facade
  4. Conclusion

Facade Design Pattern

Facade design pattern is a structural pattern that provides a simplified interface to a complex system of classes, libraries, or frameworks. It acts as a unified interface to a set of interfaces in a subsystem, making it easier to use.

The main purpose of the facade pattern is to hide the complexities of the system and provide an interface to the client using which the client can easily access the system.

Swift Example

Let’s consider a scenario where a client wants to access a complex subsystem to perform a series of tasks without having to deal with the complexities of each component in the subsystem.

class SubsystemA {
    func operationA() {
        print("SubsystemA operation")

class SubsystemB {
    func operationB() {
        print("SubsystemB operation")

class Facade {
    private let subsystemA = SubsystemA()
    private let subsystemB = SubsystemB()

    func operation() {

let facade = Facade()

In this example, the Facade class provides a simple interface for the client to access the functionalities of SubsystemA and SubsystemB. The client can use the facade.operation() method without needing to know the internal details of the subsystem.

Benefits of Using Facade


Using the facade design pattern can greatly simplify the interaction between the client and a complex subsystem. It promotes encapsulation, loose coupling, and provides a user-friendly interface to access the functionalities of a complex system. This pattern is particularly useful when dealing with large codebases or third-party libraries, making the overall system more maintainable and easier to use.