Swift prototype design sample – The.Swift.Dev.

Swift prototype design sample – The.Swift.Dev.



· 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 present (clone) these predefined values to a different one. Mainly you’re making clones from a prototype objects. 😊😊😊

This method has some advantages, one is for instance that you simply don’t must subclass, however you may configure clones individually. This additionally means that you would be able to take away a bunch of boilerplate (configuration) code if you’ll use prototypes. 🤔

class Paragraph {

    var font: UIFont
    var coloration: UIColor
    var textual content: String

    init(font: UIFont = UIFont.systemFont(ofSize: 12),
         coloration: UIColor = .darkText,
         textual content: String = "") {

        self.font = font
        self.coloration = coloration
        self.textual content = textual content
    }

    func clone() -> Paragraph {
        return Paragraph(font: self.font, coloration: self.coloration, 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 just some strains of code. You solely want a default initializer and a clone technique. All the things might be pre-configured for the prototype object within the init technique and you may make your clones utilizing the clone technique, however that’s fairly apparent at this level… 🤐

Let’s check out yet one more instance:

class Paragraph {

    var font: UIFont
    var coloration: UIColor
    var textual content: String

    init(font: UIFont = UIFont.systemFont(ofSize: 12),
         coloration: UIColor = .darkText,
         textual content: String = "") {

        self.font = font
        self.coloration = coloration
        self.textual content = textual content
    }

    func clone() -> Paragraph {
        return Paragraph(font: self.font, coloration: self.coloration, 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 in case you are planning to have snapshots of a given state. For instance in a drawing app, you possibly can 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 possibly can create a snapshot from it. You’ll be able to proceed to work on the brand new object, however this provides you with the power to return to a saved state at any level of time sooner or later. 🎉

That’s it in regards to the prototype design sample in Swift, in a nuthsell. 🐿

Associated posts


· 5 min learn


On this article I’m going to indicate you how you can implement a fundamental occasion processing system on your modular Swift software.


· 4 min learn


Be taught the iterator design sample through the use of some customized sequences, conforming to the IteratorProtocol from the Swift normal library.


· 4 min learn


Discover ways to use lazy properties in Swift to enhance efficiency, keep away from optionals or simply to make the init course of extra clear.


· 5 min learn


Newbie’s information about optics in Swift. Discover ways to use lenses and prisms to govern objects utilizing a purposeful method.

author avatar
roosho Senior Engineer (Technical Services)
I am Rakib Raihan RooSho, Jack of all IT Trades. You got it right. Good for nothing. I try a lot of things and fail more than that. That's how I learn. Whenever I succeed, I note that in my cookbook. Eventually, that became my blog. 
rooshohttps://www.roosho.com
I am Rakib Raihan RooSho, Jack of all IT Trades. You got it right. Good for nothing. I try a lot of things and fail more than that. That's how I learn. Whenever I succeed, I note that in my cookbook. Eventually, that became my blog. 

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here


Latest Articles

author avatar
roosho Senior Engineer (Technical Services)
I am Rakib Raihan RooSho, Jack of all IT Trades. You got it right. Good for nothing. I try a lot of things and fail more than that. That's how I learn. Whenever I succeed, I note that in my cookbook. Eventually, that became my blog.