Download Week 7 Lecture 1 - part 2

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Concurrency control wikipedia , lookup

Database model wikipedia , lookup

Clusterpoint wikipedia , lookup

Transcript
769818661
THE PERSISTENCE LAYER
(chapter 38)
Classic three tier architecture
Object Store
UPC
Quantity
Total
Presentation
Tendered
Enter Item
Application
Logic
Balance
End Sale
Make Payment
Authorize
payments
Record sales
Storage
Database
Multitiered architecture (  3 tiers)
Isolate application logic into separate components
which can be reused in other system
Distribute tiers on different machines
Allocate developers to specific tiers
—1—
769818661
Database Brokers
Java files and streams
Catalog broker
The Façade Pattern
—2—
769818661
DATABASE BROKERS
Who should be responsible for storing and retrieving
objects such as Catalog?
The class itself could (by expert), but 2 problems
tightly couples the class to a particular way of
doing the storage,
introduces a whole new set of responsibilities
(features) which have little to do with the other
responsibilities of the class.
The first of these violates low coupling and so makes
maintenance and reuse harder.
The second violates high cohesion and again makes
maintenance and reuse more difficult.
The solution is to construct a class which has the
responsibility for storing and retrieving objects.
This is the Database Broker pattern.
There may be a database broker class for each
persistent object class. Alternatively, one database
broker may handle many classes.
—3—
769818661
CATALOGBROKER
We are now in a position to write a CatalogBroker
(version 1). All it will do is to store and retrieve a
Product Catalog (from Post).
public class Catalog implements
java.io.Serializable;
The main methods of CatalogBroker are commit which
saves the catalogue to a file and retrieve which reads it
from the file.
public class CatalogBroker {
public void commit() throws IOException;
public Catalog retrieve() throws IOException;
}
—4—
769818661
The whole class is
import java.io.*;
import java.util.*;
/** stores and retrieves Catalog
*/
public class CatalogBroker {
private Catalog cat = null;
public Catalog getCatalog()
throws IOException {
if (cat == null)
cat = retrieve();
return cat;
} // getCatalog
public void commit() throws IOException {
// as earlier
private Catalog retrieve() throws IOException {
// as above
} // class CatBroker
—5—
769818661
—6—