Review Topics
Unless otherwise specified below, know the following for each pattern
mentioned here:
- goals
- be able to draw a class model applying the pattern
- explain the pro's and con's of using the pattern
- be able to write code applying the pattern
For the patterns presented by students, know primary goals, primary issues,
and a way the pattern is applied either in Java class libraries or
real-world applications.
Patterns
- Creational patterns
- Factory Method, including static factory methods
- Singleton
- Structural patterns
- Adapter
- Composite
- Decorator
- Not I/O decorators (at least, no expectation you will
know the classes involved)
- Façade
- Behavioral patterns
- Command
- Observer
- Strategy
- Other patterns
- Null Object
- Simple Factory
- Model/View/Controller (MVC)
- Pub/Sub
- Primary facts about the patterns presented by other students
Design
- Definition of an object
- UML Notation
- generalization, association, multiplicities, role names,
attributes, methods, abstract vs. interface
- sequence diagrams - reading only; you won't have to write these
- Domain objects: responsibility, identity, behavior, state
- give an example responsibility
- what is identity and how is it used?
- Noun/verb identification method
- Cohesion and coupling
- Threads, synchronization
- Cloud computing
Where to go from here?
- What would be the impact of using all the patterns on every project?
- How does coupling and cohesion relate to design patterns? Design in
general?
- Is this all of the patterns?
- Consider the Bomb pattern
- Pattern Languages of Programs
(PLoP) conferences:
annual discussion of patterns among researchers
- Why the focus
on domain-driven
design?
- Basic structure: layers (Ch. 28 in Java Design Pattern
Essentials)
- Cost: potential performance impact
Challenge: Going Laptop-free
- Imagine a campus where all computing resources were cloud-based, no
one carried a laptop
- Each student has an individual VM on the server set up to run
Windows as if it were a laptop right in front of you
- That is, each student has disk space allocated to them, an
operating system that runs programs (as if they are run on your
laptop), and a way for mouse events/key presses/display updates to go
back and forth.
- Students carry foldable keyboards, mice and connected via their phones
- Assume each desk in each room has a screen
- Key requirements:
- Administrative tools so automated systems can provision systems,
run updates, decommission
- Each department determine all software needed; administrative tools
autoload these
- Need strong predictive (AI) tools to determine when systems likely to be
needed so have adequate server capacity
- Need strong data privacy: all application data stored on disks (eg documents,
social media history) must be
encrypted using keys owned by the student alone, with the student able
to allow administrative access for a period when necessary.
- Need monitoring tools that help determine if a system has been
compromised by an unauthorized user and alert the user and then staff
of the issue, but the monitoring tools must respect data
privacy. For example, access times by the student and data transfer
amounts can be registered (but not the content of that data).
- Set up "honeypot" systems with weaker security to assist IT in
identifying systematic penetration attacks.
- Others?
- Working in groups, identify applications of design patterns to this system
- For each pattern, write a couple sentences describing how it would
be applied and justifying its application