Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Паттерн Фасад

Назначение

Облегчает задачу пользователю: есть много классов, которые последовательно выполняют какие-либо действия. Паттерн фасад берет выполнение всех этих действия на себя, скрывая их в своем методе. Этот метод фасада доступен пользовтелю.

Листинг

Facade.swift -> Исходный код

class User {
    private let _username: String
    private let _password: String
    
    
    init(username: String, password: String) {
        self._username = username
        self._password = password
    }
    
    func getUserInfo() -> (username: String, password: String) {
        return (_username, _password)
    }
}

class DB {
    private let _dbName: String
    
    init(dbName: String) {
        self._dbName = dbName
    }
    
    func getDB() -> [(username: String, password: String)] {
        let db : [(username: String, password: String)] = [("timoninas", "123456789"),
                                                           ("timonines", "ghIjfld"),
                                                           ("timoninss", "00let00var")]
        return db
    }
    
}

// FACADE
class Authorizator {
    private let _username: String
    private let _password: String
    private var _isAuthorizate: Bool = false
    
    init(user: User) {
        self._username = user.getUserInfo().username
        self._password = user.getUserInfo().password
    }
    
    func authorizate() {
        let db = DB(dbName: "DataBaseus")
        
        for user in db.getDB() {
            if user.username == self._username && user.password == self._password {
                _isAuthorizate = true
            }
        }
        
        if (_isAuthorizate) {
            print("\n\n \(self._username) is authorized!")
        } else {
            print("\n\n \(self._username) is NOT authorized!")
        }
    }
    
    func isAuthorizated() -> Bool {
        return self._isAuthorizate
    }
}

func main() {
    
    var auth = Authorizator(user: User(username: "timonines", password: "ghIjfld"))
    auth.authorizate()
    
    auth = Authorizator(user: User(username: "timoninas", password: "ghIjfld"))
    auth.authorizate()
}

Console

timonines is authorized!
timoninas is NOT authorized!