Chapter 6: Singleton Pattern

大綱

When should you use it?

  • The singleton pattern restricts a class to only one instance.

    • This pattern is extremely common in iOS app development, as Apple makes extensive use of it.

  • When should you use it?

    • Use the singleton pattern when having more than one instance of a class would cause problems, or when it just wouldn’t be logical.

    • Use the singleton plus pattern if a shared instance is useful most of the time, but you also want to allow custom instances to be created.

      • An example of this is FileManager, which handles everything to do with filesystem access. There is a “default” instance which is a singleton, or you can create your own. You would usually create your own if you’re using it on a background thread.”

Playground example

  • Singleton pattern

  • Singleton Plus pattern

What should you be careful about?

  • The singleton pattern is very easy to overuse.

  • If you encounter a situation where you’re tempted to use a singleton, first consider other ways to accomplish your task.

    • For example, singletons are not appropriate if you’re simply trying to pass information from one view controller to another. Instead, consider passing models via an initializer or property.

  • If you determine you actually do need a singleton, consider whether a singleton plus makes more sense.

    • Will having more than one instance cause problems?

    • Will it ever be useful to have custom instances?

    • Your answers will determine whether its better for you to use a true singleton or singleton plus.

Tutorial project

Key points

  • The singleton pattern restricts a class to only one instance.

  • The singleton plus pattern provides a “default” shared instance but also allows other instances to be created too.

  • Be careful about overusing this pattern! Before you create a singleton, consider other ways to solve the problem without it. If a singleton really is best, prefer to use a singleton plus over a singleton.

Last updated