Presentation is loading. Please wait.

Presentation is loading. Please wait.

March 200592.3913 R McFadyen1 Design Patterns (GoF) contains the creational patterns: Abstract factory Builder Factory method (in Larman) Prototype Singleton.

Similar presentations


Presentation on theme: "March 200592.3913 R McFadyen1 Design Patterns (GoF) contains the creational patterns: Abstract factory Builder Factory method (in Larman) Prototype Singleton."— Presentation transcript:

1 March 200592.3913 R McFadyen1 Design Patterns (GoF) contains the creational patterns: Abstract factory Builder Factory method (in Larman) Prototype Singleton (in Larman) These are creational patterns for the instantiation process Help to make a system independent of how its objects are created They hide how instances of classes are created GoF Patterns

2 March 200592.3913 R McFadyen2 Simple Factory (23.3 2 nd edition or 26.4 3 rd edition) Problem: who should be responsible for creating objects when there are special considerations such as complex creational logic, … Solution: create a Pure Fabrication object called a Factory that handles the creation. (The factory creates objects.) E.g. Which adapters should exist when NextGenPOS is running? The text presents a class that determines which adapters will be instantiated. Simple Factory Pattern

3 March 200592.3913 R McFadyen3 Textbook example The NextGen POS system supports several kinds of 3 rd party services. For example: tax calculators such as TaxMaster and Good As Gold, account packages such as SAP and Great Northern. The support is provided through “adapters”. The text is concerned with determining the class that should create the required adapters. Choosing a class in the domain model will lower the cohesion of that class. Instead we apply pure fabrication, and using the Simple Factory Pattern, we have a Factory class that has the responsibility to create such adapter objects. Simple Factory Pattern

4 March 200592.3913 R McFadyen4 Textbook example ServicesFactory is a class that is responsible for creating the various adapters required in NextGenPOS. It is a factory. Simple Factory Pattern ServicesFactory accountingAdapter:… inventoryAdapter:… taxCalculatorAdapter:… getAccountingAdapter():… getInventoryAdapter():… getTaxCalculatorAdapter():…

5 March 200592.3913 R McFadyen5 Textbook example Suppose an external source contains the names of the adapters that are to be used. This source is available at runtime. ServicesFactory accesses this source and instantiates the correct adapter objects. Different adapters will be instantiated for different NextGenPOS systems. Simple Factory Pattern ServicesFactory accountingAdapter:… inventoryAdapter:… taxCalculatorAdapter:… getAccountingAdapter():… getInventoryAdapter():… getTaxCalculatorAdapter():…

6 March 200592.3913 R McFadyen6 Singleton (23.4 2 nd edition or 26.5 3 rd edition) Problem: Exactly one instance of a certain object is required (this object is called a singleton). We must ensure a class has only one instance. Solution: use a static method of the class to return the singleton Factories and Facades are usually singletons. Textbook problem: how do we control the instantiation of the ServicesFactory? Singleton Pattern

7 March 200592.3913 R McFadyen7 Singleton In Java, you would have code such as: Public static synchronized ServicesFactory getInstance() { If (instance == null) Instance := new ServicesFactory() Return instance } Singleton Pattern The point of the above is that only one instance is ever created. If one already exists, then the create is bypassed and the reference to the existing object is returned.

8 March 200592.3913 R McFadyen8 Singleton In Java, you would have code such as: Public static synchronized ServicesFactory getInstance() { If (instance == null) Instance := new ServicesFactory() Return instance } Singleton Pattern The “synchronized” keyword ensures that only one “thread” runs this code at a time. The text refers to a “critical section”.

9 March 200592.3913 R McFadyen9 Singleton Pattern Suppose an instance of the ServicesFactory is created and, later on, a message, getTaxCalculatorAdapter(), is passed to this instance. :Register :ServicesFactory getInstance() ServicesFactory create() getTaxCalculatorAdapter()

10 March 200592.3913 R McFadyen10 Singleton Pattern Figure 23.6 2 nd edition :Register :AccountingAdapter getAccountingAdapter() > :ServicesFactory create() post() By applying the singleton stereotype to this object, they imply the getInstance method was used to instantiate it.

11 March 200592.3913 R McFadyen11 Singleton Pattern See Figure 26.8 3 rd edition :Register :SAPAccountingAdapter getAccountingAdapter() create() post() By applying the singleton stereotype to this object, they imply that getInstance method was used to instantiate it. 1 :ServicesFactory

12 March 200592.3913 R McFadyen12 Singleton Pattern The text makes reference to Lazy Instantiation – The ServicesFactory object was created when it was needed, and not before :Register :AccountingAdapter getAccountingAdapter() > :ServicesFactory create() post()


Download ppt "March 200592.3913 R McFadyen1 Design Patterns (GoF) contains the creational patterns: Abstract factory Builder Factory method (in Larman) Prototype Singleton."

Similar presentations


Ads by Google