Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aainaj/991f0fd197075656f4936e83dac962a0 to your computer and use it in GitHub Desktop.
Save aainaj/991f0fd197075656f4936e83dac962a0 to your computer and use it in GitHub Desktop.
BuilderPattern for creating multiple type of objects using struct for model
struct OptionDetailDataStruct: Equatable {
let isExpired: Bool
let expiryDate: String?
let cardNumber: String?
let formattedNumber: String?
let phoneNumber: String?
}
class OptionDetailDataBuilderStruct {
private var isExpired: Bool = false
private var expiryDate: String?
private var cardNumber: String?
private var formattedNumber: String?
private var phoneNumber: String?
func set(isExpired: Bool) -> OptionDetailDataBuilderStruct {
self.isExpired = isExpired
return self
}
func set(expiryDate: String) -> OptionDetailDataBuilderStruct {
self.expiryDate = expiryDate
return self
}
func set(cardNumber: String) -> OptionDetailDataBuilderStruct {
self.cardNumber = cardNumber
return self
}
func set(formattedNumber: String) -> OptionDetailDataBuilderStruct {
self.formattedNumber = formattedNumber
return self
}
func set(phoneNumber: String) -> OptionDetailDataBuilderStruct {
self.phoneNumber = phoneNumber
return self
}
func build() -> OptionDetailDataStruct {
return OptionDetailDataStruct(isExpired: isExpired, expiryDate: expiryDate, cardNumber: cardNumber, formattedNumber: formattedNumber, phoneNumber: phoneNumber)
}
}
let data1 = OptionDetailDataBuilderStruct()
.set(isExpired: false)
.set(expiryDate: "Today")
.set(formattedNumber: "****1234****")
.set(phoneNumber: "9876543210")
.set(cardNumber: "441122224411")
.build()
let walletMetadata1 = OptionDetailDataBuilderStruct()
.set(phoneNumber: "9876543210")
.build()
print(walletMetadata.phoneNumber)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment