1. Definition
The Singleton Design Pattern ensures a class has only one instance and provides a point to access this instance throughout the application.
2. Problem Statement
In certain scenarios, it's crucial to ensure that a class has only one instance. Multiple instances could cause inconsistent results, overuse of resources, or synchronization issues.
3. Solution
To solve the problem, the Singleton pattern restricts instantiation of the class to one object. This can be achieved by:
1. Making the constructor private.
2. Providing a static method that controls the instance creation process and returns the sole instance.
4. Real-World Use Cases
1. Managing a shared resource, like configuration settings.
2. Database connections where a shared single connection pool is used to avoid the overhead of establishing a new connection for every request.
3. Logger systems where logs from different parts of an application need to be written into a single file.
5. Implementation Steps
1. Declare a private static instance of the same class.
2. Make the constructor private to prevent usage of the init outside the class.
3. Provide a public static method to get the instance of the class.
6. Implementation in Swift Programming
class Singleton {
// Step 1: Declare a private static instance of the same class.
private static var sharedInstance: Singleton?
// Step 2: Make the constructor private.
private init() { }
// Step 3: Provide a public static method to get the instance of the class.
public static func getInstance() -> Singleton {
if sharedInstance == nil {
sharedInstance = Singleton()
}
return sharedInstance!
}
}
// Testing the Singleton
let instance1 = Singleton.getInstance()
let instance2 = Singleton.getInstance()
print(instance1 === instance2) // This will print true, showing both instances are the same.
Output:
true
Explanation:
1. Singleton class ensures that it can't be instantiated from outside because of its private constructor.
2. It provides a getInstance method which ensures that only one instance of the class is ever created. If the instance is not created, it initializes and then returns it. Otherwise, it simply returns the existing instance.
3. In the testing section, we retrieve two instances, instance1 and instance2, using the getInstance method. Comparing these two instances with the identity operator (===) confirms that they reference the same Singleton object.
7. When to use?
Use the Singleton pattern when:
1. A class in your program should just have a single instance available to all clients; for example, a single database object shared by different parts of the program.
2. You want to restrict instantiation of a class to one object.
3. The single instance should be extendable by subclassing, and clients should be able to use an extended instance without modifying the code.
Design Pattern
Related Swift Examples:
Swift Hello World Program
Swift Program to Add Two Numbers
Swift Program to Subtract Two Numbers
Swift Program to Multiply Two Numbers
Swift Program to Divide Two Numbers
Swift Program to Find Remainder
Swift Program to Check Even or Odd
Swift Program to Find Factorial of a Number
Swift Program to Generate Fibonacci Series
Swift Program to Swap Two Numbers Without Using Temporary Variable
Swift Program to Find Largest Among Three Numbers
Swift Program to Calculate the Area of a Circle
Swift Program to Reverse a Number
Swift Program to Make a Simple Calculator
Swift Program to Check Palindrome
Swift Program to Count Number of Digits in an Integer
Swift Program to Sum of Natural Numbers
Swift Program to Display Times Table
Swift Program to Check Prime Number
Swift Program to Find LCM
Swift Program to Find GCD
Swift Program to Find the Power of a Number
Swift Program to Split a String into Words
Swift Program to Check Leap Year
Swift Program to Join Two Strings
Swift Program to Check Armstrong Number
Swift Program to Find Sum of Array Elements
Swift Program to Find the Largest Element of an Array
Swift Program to Perform Matrix Addition
Swift Program to Transpose a Matrix
Swift Program to Multiply Two Matrices
Swift Program to Find Length of a String
Swift Program to Copy One String to Another String
Swift Program to Concatenate Two Strings
Swift Program to Search for a Character in a String
Swift Program to Count Frequency of a Character in String
Swift Program to Create a Simple Class and Object
Swift Program to Implement Inheritance
Swift Program to Handle Simple Exceptions
Swift Variables and Constants Example
Swift Data Types (Int, Double, String) Example
Swift Optionals and Optional Binding Example
Swift Tuples Example
Swift Array Example
Swift Dictionary Example
Swift Set Example
Swift Closures Example
Swift Enums Example
Swift Structures Example
Swift Properties (Stored, Computed) Example
Swift Methods (Instance, Type) Example
Swift Subscripts Example
Swift Inheritance and Overriding Example
Swift Protocols Example
Swift Extensions Example
Swift Generics and Generic Functions Example
Swift Error Handling with Do-Catch Example
Swift Guard Statement Example
Swift Defer Statement Example
Swift Type Casting (as, is, as?) Example
Swift Access Control Example
Swift Attributes (@available, @discardableResult) Example
Swift Pattern Matching Example
Swift Switch Statement and Cases Example
Swift For-In Loop Example
Swift While and Repeat-While Loops Example
Swift Conditional Statements (If, If-Else, Ternary) Example
Swift Operators Example
Swift Memory Management Example
Swift Strong, Weak, and Unowned References Example
Swift Initialization and Deinitialization Example
Swift Protocol-Oriented Programming Example
Swift Nested Types Example
Swift Type Aliases Example
Swift Dynamic Member Lookup Example
Swift Lazy Stored Properties Example
Swift KeyPaths Example
Swift String Manipulation and Methods Example
Swift Regular Expressions Example
Swift
Comments
Post a Comment