· 1 min learn
The prototype design sample is used to create clones of a base object, so let’s have a look at some sensible examples written in Swift.
This can also be a creational design sample, it’s helpful when you will have a really fundamental configuration for an object and also you’d like to provide (clone) these predefined values to a different one. Mainly you’re making clones from a prototype objects. 😊😊😊
This strategy has some advantages, one is for instance that you simply don’t need to subclass, however you may configure clones individually. This additionally means which you could take away a bunch of boilerplate (configuration) code if you’ll use prototypes. 🤔
class Paragraph {
var font: UIFont
var shade: UIColor
var textual content: String
init(font: UIFont = UIFont.systemFont(ofSize: 12),
shade: UIColor = .darkText,
textual content: String = "") {
self.font = font
self.shade = shade
self.textual content = textual content
}
func clone() -> Paragraph {
return Paragraph(font: self.font, shade: self.shade, textual content: self.textual content)
}
}
let base = Paragraph()
let title = base.clone()
title.font = UIFont.systemFont(ofSize: 18)
title.textual content = "That is the title"
let first = base.clone()
first.textual content = "That is the primary paragraph"
let second = base.clone()
second.textual content = "That is the second paragraph"
As you may see the implementation is only a few strains of code. You solely want a default initializer and a clone methodology. Every part can be pre-configured for the prototype object within the init methodology and you may make your clones utilizing the clone methodology, however that’s fairly apparent at this level… 🤐
Let’s check out yet one more instance:
class Paragraph {
var font: UIFont
var shade: UIColor
var textual content: String
init(font: UIFont = UIFont.systemFont(ofSize: 12),
shade: UIColor = .darkText,
textual content: String = "") {
self.font = font
self.shade = shade
self.textual content = textual content
}
func clone() -> Paragraph {
return Paragraph(font: self.font, shade: self.shade, textual content: self.textual content)
}
}
let base = Paragraph()
let title = base.clone()
title.font = UIFont.systemFont(ofSize: 18)
title.textual content = "That is the title"
let first = base.clone()
first.textual content = "That is the primary paragraph"
let second = base.clone()
second.textual content = "That is the second paragraph"
The prototype design sample can also be useful if you’re planning to have snapshots of a given state. For instance in a drawing app, you would have a form class as a proto, you can begin including paths to it, and in some unspecified time in the future at time you would create a snapshot from it. You’ll be able to proceed to work on the brand new object, however this will provide you with the flexibility to return to a saved state at any level of time sooner or later. 🎉
That’s it concerning the prototype design sample in Swift, in a nuthsell. 🐿
Associated posts
On this article I’m going to point out you the way to implement a fundamental occasion processing system in your modular Swift software.
Be taught the iterator design sample through the use of some customized sequences, conforming to the IteratorProtocol from the Swift customary library.
Learn to use lazy properties in Swift to enhance efficiency, keep away from optionals or simply to make the init course of extra clear.
Newbie’s information about optics in Swift. Learn to use lenses and prisms to control objects utilizing a purposeful strategy.

