Design Patterns Story:

advertisement
Subgroup 3
Workshop #2
Poster Presentation
Workshop #2
Design Patterns – Poster Presentation
Submitted by
Uttara Paingankar (Group Leader)
Rahul Gupta
Bhavani Sangannagari
Tulika Rathi
WebSite: http://u.students.umkc.edu/uapxcf
1
Subgroup 3
Workshop #2
Poster Presentation
Design Patterns Story
A Design Pattern is a “description of a problem, which occurs over and over again in our
environment and then describes the core of the solution to that problem, in such a way that you
can use this solution a million times over, without ever doing it in the same way twice” as
described by Christopher Alexander and mentioned in book on Design Patterns, Elements of
Reusable Object oriented Software, by the Gang of Four.
A design pattern is a very abstract, high-level concept related mostly to Software Architecture
and hence needs some kind of a story to be made understandable and easily graspable.
Here we present a story to describe the following patterns:
1. Adapter
2. Chain of Responsibility
3. Interpreter
4. Visitor
5. Proxy
6. Façade
7. Composite
8. Observer
9. Mediator
10. Strategy
11. Factory Method
12. Prototype
13. Bridge
Our story begins with the scenario of Law governing the society made for its safety and security.
The participants of our story include:
1. A set of rules: Which define the way order and peace is to be maintained in the society.
2. The implementers of law: The Police Department, the FBI and CIA.
3. A Control Headquarters: Which is the central body over these three.
4. A Cop: which is a part of the implementers of the Law.
5. Investigate: It is a procedure followed by all the 3 departments to solve a case.
6. A courtroom: Where all the lawful decisions are made.
7. Common people: For whom these laws have been made.
8. Forensic Experts: Who help the law implementers for solving cases by performing
analysis on the physical evidences provided by the police.
2
Subgroup 3
Workshop #2
Poster Presentation
Our Story starts with a murder that is committed in a house. The family of the murder victim calls
up the police to report the crime that has been committed. Once the crime is reported, the head of
the police department assigns the case to a team of investigators. Now, here the department head
acts as a façade pattern and this is explained below.
Façade provides a unified interface to a set of interfaces in a subsystem. Façade defines a higherlevel interface that makes the subsystem easier to use.
Here, when a case is reported the head of the department sees the case and then assigns it to a
team of investigators. After they report the case as being solved the head then can go ahead and
present it in the court of law. Once the verdict is given the head can close the file of that case.
Now that the case has been assigned to a team, the investigation starts. The investigation can be
identified as a prototype. The various law enforcement agencies Investigate a crime.
Prototype specifies the kinds of objects to create using a prototypical instance, and create new
objects by copying this prototype.
Here, Investigate also acts as a prototype for the Police, FBI and the CIA. It acts as a prototype in
the sense that the basic steps defined for investigating a case remain the same. Only some aspects
of that vary from organization to organization.
3
Subgroup 3
Workshop #2
Poster Presentation
Investigation prototype can be implemented using a factory method as the way these law
enforcement agencies investigate a case might differ slightly from one another.
It defines an interface for creating an object, but lets subclasses decide which class to instantiate.
Factory Method lets class defer instantiation to subclasses.
Here, investigate is a set of procedures which is used by all the 3 forms of Law implementers. But
the way they implement that investigation is typical for each of them. E.g. investigation for FBI
may differ from the investigation for CIA.
During the investigation process, the investigators go to the crime scene and try to collect
evidence that might lead them to the killer. The obtained clues along with the dead body are sent
in for forensic analysis (biological and chemical) so that they can obtain a picture of how the
crime may have been committed. The forensic operations can be identified as visitor pattern.
Visitor represents an operation to be performed on the elements of an object structure. Visitor lets
you define a new operation without changing the classes of the elements on which it operates.
Here, some special types of cases require the investigators to use special analysis with the help of
some external agencies. These external agencies act as Forensics for the scenario. The forensics
act independently and return the results to the investigators without modifying their existing data
or functionality.
4
Subgroup 3
Workshop #2
Poster Presentation
After the team has the result of the analysis, they send this data to the profilers, who can
make a profile of the killer. This would help the investigators to get hold of the fugitive as
soon as possible. This can be identified as the Chain of Responsibility pattern, where in we
are passing the responsibility of creating profiles to someone who is capable of doing it.
Avoid coupling the sender of a request to its receiver by giving more than one object a chance
to handle the request. Chain the receiving objects and pass the request along the chain until an
object handles it.
Once the investigators have profile to work with, they need to plan a strategy of arresting the
killer. So, as the crime has been a murder the police decide that they would have special
personnel on the task of deciding a plan of action, which can include notifying the media
about the murder and the making the profile of the killer available to the public. We can
identify a Strategy Pattern here as depending on the seriousness of the crime we identify what
needs to be done.
5
Subgroup 3
Workshop #2
Poster Presentation
Strategy defines a family of algorithms that encapsulate each one and make them
interchangeable. It lets the algorithm without changing the algorithms structure. A police
department decides over the strategy that can be applied to a case by deciding to handle the
case by itself or giving it to private personal, CIA, FBI for investigation.
The search for the killer is now very well under way. In the meantime, there are some
changes made in the constitution. The control HQ that acts as a control body over the law
enforcement agencies notifies the agencies about the change in certain laws. An Observer
pattern can be identified here.
An Observer defines a one-to-many dependency between objects so that when one object changes
state, all its dependents are notified and updated automatically.
Here the Control HQ communicates with all the 3 types of Law Implementers. When a certain set
of rules in the Constitution change, the control HQ knows about it and that information is
immediately propagated to other two by the Control HQ. Thus it acts as the subject object and the
rest act as observers.
As the frantic search for the killer is going on, FBI gets hold of a convict regarding some other
case and who has a matching profile with the suspect that the police department is looking for.
The FBI notifies the control HQ (mediator) about this and the control HQ in return notifies the
Police department. The police department then realizes that he is not the one they are looking for
and hence they continue their search.
6
Subgroup 3
Workshop #2
Poster Presentation
Mediator defines an object that encapsulates how sets of objects interact. Mediator promotes
loose coupling by keeping objects from referring to each other explicitly, and lets you vary their
interaction independently.
Here the Control HQ acts as a mediator between the 3 departments. As observed, these 3
departments actually perform independently without interacting with each other directly.
Whatever be the interaction is brought about with the help of the Control HQ.
Finally they get a lead on where to find their suspect and plan an arrest. But during the chase the
fugitive shoots at the lead investigator. The lead investigator is hospitalized and a new
investigator is assigned to the case in his place so that the case can stay open. This can be
identified as a proxy pattern.
Provide a surrogate or placeholder for another object to control access to it.
Consider the case where the lead investigator gets shot and gets hospitalized, another investigator
(a proxy) is assigned to the case.
The cops finally arrest the fugitive after a great ordeal. Now the case has to be presented in the
court of law. It is necessary to note that all the states implement the same laws only how they
implement is different. Hence, a bridge pattern can be identified in this scenario.
7
Subgroup 3
Workshop #2
Poster Presentation
Decouple an abstraction from its implementation so that the two can vary independently.
Law implemented against crimes is the same everywhere; only the way it is implemented differs
in different states. Some stated might have death penalty for murder whereas some might just
give a life imprisonment for the same.
The defendant in the case needs justice from Law and hence needs someone to represent him in
the court of law, as he does not understand the proceeding that might take place there. An
Interpreter pattern can be identified in this case.
Interpreter is defined in a way as if given the language; define a representation for its grammar
along with an interpreter that uses the representation to interpret sentences in the language.
The defendant needs to understand the proceedings in the court of law and hence needs someone
to interpret it for him. Lawyer helps the defendants to present their case in the court and hence we
can say that the lawyer acts as an interpreter for the defendant.
8
Subgroup 3
Workshop #2
Poster Presentation
Also we can say that as the defendant needs to get justice from the law the court acts as an
adapter to achieve that justice.
An adapter pattern is the one, which converts the interface of a class into another interface clients
expect. Adapter lets classes work together that couldn’t otherwise because of incompatible
interfaces.
Here, the Law laid down by the Constitution is some thing which cannot be used or accessed by a
common man directly because it has to be used only by authorized people who understand it
thoroughly and who know how to make right use of it and that designatory is the Court. A person
wanting to consult the law cannot directly access the Law. It has to be done through the medium
of Court. Thus the Court acts as an Adapter between the Common man and the Law.
Finally the killer is convicted and the defendant wins the case. The head of the police department
closes the case. As the case was successfully solved and a dangerous killer was caught due to the
diligent effort of the team, the entire team gets an appraisal from the department. The department
can be identified as a composite pattern.
9
Subgroup 3
Workshop #2
Poster Presentation
Composite composes objects into tree structures to represent part whole hierarchies. Composite
lets clients treat individual objects and compositions of objects uniformly.
In a particular department we have a department head, sergeants and officers in a certain
hierarchy. Everyone gets a salary, leave, an evaluation or an appraisal. This represents a
composite pattern.
10
Download