package ding;
import java.util.ArrayList;
import java.util.Random;
import ding.generics.Generators;
/**
* @author E-mail:
* @version 2018年6月5日 下午9:31:42
*/
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 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);
}
};
@Override
public String toString() {
return "Product [id=" + id + ", description=" + description
+ ", price=" + price + "]";
}
}
class Shelf extends ArrayList<Product>{
public Shelf(int nProdects){
Generators.fill(this, Product.generator, nProdects);
}
}
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{}
public 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 static void main(String[] args) {
System.out.println(new Store(14,5,10));
}
}
package ding.generics;
import java.util.Collection;
import ding.Generator;
/**
* @author dingaijie E-mail:
* @version 2018年6月5日 上午8:47:34
*/
public 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;
}
}
package ding;
/**
* @author E-mail:
* @version 2018年6月4日 下午11:54:13
*/
public interface Generator<T> {
T next();
}