Skip to content

Instantly share code, notes, and snippets.

// Singleton class Vehicle
class Vehicle {
static let sharedInstance = Vehicle()
// private initialser
private init() {}
func getName() -> String {
return "Car"
}
// protocol for creating a product
protocol ShoeShop {
func produceShoe()
}
// class that conforms to ShoeShop protocol
class Nike: ShoeShop {
func produceShoe() {
print("Shoe Produced")
// Abstract Factory
protocol FurnitureFactory {
static func createTable() -> Table
static func createChair() -> Chair
}
// Abstract product Table
protocol Table {
func count() -> Int
// Protocol
protocol Fruit {
func getPrice() -> String
func getCount() -> Int
}
// Implements Fruit Protocol
class Orange: Fruit {
func getPrice() -> String {
@LH17
LH17 / Prototype Pattern.swift
Last active April 14, 2018 12:54
Prototype Design Pattern
// Protocol
protocol Fruit {
func set(price: String?)
func clone() -> Fruit
}
// Class Apple which implements the protocol
class Apple: Fruit {
var count: Int
precedencegroup UnionOperatorPrecedence {
associativity: left
higherThan: IntersectionOperatorPrecedence
}
precedencegroup IntersectionOperatorPrecedence {
associativity: left
}
infix operator ∩: IntersectionOperatorPrecedence
func ∩<T: Equatable> (left: [T], right: [T]) -> [T] {
var intersection: [T] = []
for value in left {
if right.contains(value) {
precedencegroup UnionOperatorPrecedence {
associativity: left
}
infix operator ∪: UnionOperatorPrecedence
func ∪ <T:Equatable>(lhs: [T], rhs:[T])->[T] {
var result = lhs
for element in rhs {
if !lhs.contains(element) {
@LH17
LH17 / StateViewController.swift
Last active June 5, 2017 09:19
StateViewController
class StateViewController: UIViewController {}
extension StateViewController: ViewStateProtocol {
@objc func handleTap(_ sender: UIView) {
// for showing the loader
addView(withState: .loading)
// for showing the error message
addView(withState: .error)
@LH17
LH17 / StateManager.swift
Created June 2, 2017 12:33
StateManager Singleton class
class StateManager {
static let sharedInstance = StateManager()
var viewStore: [String: UIView] = [:]
// Associates a view for the given state
public func addView(_ view: UIView, forState state: String, superview: UIView) {
viewStore[state] = view
superview.addSubview(view)
}