1 / 20

Chapter 1: Introduction to Design Patterns

Chapter 1: Introduction to Design Patterns. SimUDuck Example. System Update. Revise the current system to cater for ducks that fly. How can this be done?. A Possible Solution. Suppose that a RubberDuck class needs to be added?. Revision: Use Inheritance?. Suppose that you have to add

amish
Download Presentation

Chapter 1: Introduction to Design Patterns

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 1: Introduction to Design Patterns

  2. SimUDuck Example

  3. System Update • Revise the current system to cater for ducks that fly. How can this be done?

  4. A Possible Solution Suppose that a RubberDuck class needs to be added?

  5. Revision: Use Inheritance? Suppose that you have to add a decoy duck that does not fly or quack…

  6. Another Solution: Interfaces • The aspects that change for each type of duck are the methods fly() and quack(). • Take these methods out of the Duck class. • Create interfaces for these methods: • Flyable – has a method fly() • Quackable – has a method quack()

  7. Using Interfaces Problems with this?

  8. Disadvantages of the Approach • All methods in Java interfaces are abstract. • Code has to be duplicated for classes. • Modification will have to be made to more than one class. • This will introduce bugs.

  9. Design Principle • Identify the aspects of the application that vary and separate them from what stays the same. • Encapsulate the parts that vary. • Future changes can be made without affecting parts that do not vary. • Results in fewer unexpected consequences from code change.

  10. Solution • Design principle: Program to interface and not to implementation. • An interface FlyBehaviorwill be implemented by subclasses for different types of flight. • An interface Quackable will be implemented for different types of “quack”.

  11. Example Abstract class OR Interface

  12. FlyBehavior Interface

  13. QuackBehavior

  14. New Design

  15. On Last Problem • Still programming to implementation in the subclasses. • Solution – include set methods in the Duck class • To set quack behavior • To set fly behavior • The set methods allow for behavior to be dynamic at runtime

  16. Exercise • Add a new type of duck to the simulator, namely, model duck. A model duck does not fly and quacks. • Add a new fly behavior to the simulator, namely, FlyRocketPower, which represents flight via a rocket. • Create an instance of a model duck and change its behaviour at runtime to be flight via a rocket.

  17. Has-A Can be Better than Is-A • Inheritance promotes reuse but not extensibility. • Composition facilitates more flexibility. • Composition allows for behavior to change at runtime (rather than editing code). • Design principle: Favor composition over inheritance.

  18. The Strategy Pattern Defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.

  19. Lessons Learned from the Strategy Pattern • Encapsulate what varies. • Favor composition over inheritance. • Program to interfaces, not implementations

  20. Advantages of Sharing a Pattern Vocabulary • Shared pattern vocabularies are powerful. • Patterns allow you to say more with less. • Talking at the pattern level allows to stay “in design” longer. • Shared vocabularies can turbo charge your development. • Shared vocabularies encourage more junior developers to get up to speed.

More Related