interface Generator<T> {
T next();
}
class Generators{
public static <T> Collection<T> fill(Collection<T> coll, Generator<T> gen, int n){
for(int i = 0; i < n; i++){
coll.add(gen.next());
}
return coll;
}
}
class Product{
private final int id;
private String description;
private double price;
public Product(int IDnumber, String descr, double price){
id = IDnumber;
description = descr;
this.price = price;
System.out.println(toString());
}
public String toString(){
return id + " : " + description + ",price: $" + price;
}
public void priceChange(double change){
price += change;
}
public static Generator<Product> generator =
new Generator<Product>() {
private Random rand = new Random(47);
@Override
public Product next() {
return new Product(rand.nextInt(1000), "Test",
Math.round(rand.nextDouble()*1000.0) + 0.99);
}
};
}
class Shelf extends ArrayList<Product>{
public Shelf(int nProducts){
Generators.fill(this, Product.generator, nProducts);
}
}
class Aisle extends ArrayList<Shelf>{
public Aisle(int nShelves, int nProducts){
for(int i = 0; i < nShelves; i++){
add(new Shelf(nProducts));
}
}
}
class CheckoutStand{}
class Office{}
class Store extends ArrayList<Aisle>{
private ArrayList<CheckoutStand> checkouts = new ArrayList<CheckoutStand>();
private Office office = new Office();
public Store(int nAisles, int nShelves, int nProducts){
for(int i = 0; i < nAisles; i++){
add(new Aisle(nShelves, nProducts));
}
}
public String toString(){
StringBuilder result = new StringBuilder();
for(Aisle a : this)
for(Shelf s : a)
for(Product p: s){
result.append(p);
result.append("\n");
}
return result.toString();
}
}
public class Main{
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
System.out.println(new Store(2, 2, 2));
}
}
运行结果:
258 : Test,price: $400.99
861 : Test,price: $160.99
868 : Test,price: $417.99
207 : Test,price: $268.99
551 : Test,price: $114.99
278 : Test,price: $804.99
520 : Test,price: $554.99
140 : Test,price: $530.99
258 : Test,price: $400.99
861 : Test,price: $160.99
868 : Test,price: $417.99
207 : Test,price: $268.99
551 : Test,price: $114.99
278 : Test,price: $804.99
520 : Test,price: $554.99
140 : Test,price: $530.99
例子中为商店模型,Product为商品,Shelf为货架,Aisle为走廊,Store为商店