Java编程思想:构建复杂模型
import sun.nio.cs.Surrogate; import java.util.ArrayList; import java.util.Random; public class Test { public static void main(String[] args) { Store.test(); } } /* 15.6 构建复杂模型 需求: 这是一个很有趣的需求,它描述的是一个零售店,零售店里包括走廊、货架 和商品,零售店里有很多条走廊,走廊里又有很多个货架、货架中又有很多 的商品。 我最直观的想法,就是创建出许多装商品的ArrayList,这些装商品的ArrayList 被命名为货架,又将许多的货架ArrayList装到一个个走廊的ArrayList,最后在 把一个个走廊ArrayList放到一个叫作零食店的ArrayList,这样可以做,但是不是 很优雅。 */ interface Generator<T>{ T next(); } class Product { private final int id; private String desc; private double price; public Product(int id, String desc, double price) { this.id = id; this.desc = desc; this.price = price; } public String toString() { return id + ": " + desc + ". price: $" + price; } public void priceChange(double change) { price += change; } public static Generator<Product> generator = new Generator<Product>() { ); @Override public Product next() { ), "Test", Math.round(random.nextDouble()*1000.0)+0.99); } }; } class Shelf extends ArrayList<Product> { public Shelf(int nProducts) { ; i < nProducts; i++) { this.add(Product.generator.next()); } } } class Aisle extends ArrayList<Shelf> { public Aisle(int nShelves, int nProducts) { ; i < nShelves; i++) { add(new Shelf(nProducts)); } } } class CheckoutStand{ } class Office{ } class Store extends ArrayList<Aisle> { private ArrayList<CheckoutStand> checkoutStands = new ArrayList<>(); private ArrayList<Office> Office = new ArrayList<>(); public Store(int nAisles, int nShelves, int nProducts) { ; i < nAisles; i++) { add(new Aisle(nShelves, nProducts)); } } public String toString() { StringBuilder sb = new StringBuilder(); for (Aisle a : this) { for (Shelf s : a) { for (Product p : s) { sb.append(p).append("\n"); } } } return sb.toString(); } static void test() { System.,,)); } } /* 我觉得这个设计这样用挺浪费的,这个它纯粹为了案例演示,让Product类 自动生成自己的对象了,现实生活中肯定不会这么用着。 现实中,一个商品放在哪个走廊哪个位置应该都是有一张表的,我们根据表 中的数据先实例化出一个商品类来,然后再根据表中的数据找到这个商品放 置的位置,这个过程中,可能用map会更好一点。 但是这种编码方式的的确确优雅很多。 */
Java编程思想:构建复杂模型的更多相关文章
- Java编程思想(11~17)
[注:此博客旨在从<Java编程思想>这本书的目录结构上来检验自己的Java基础知识,只为笔记之用] 第十一章 持有对象 11.1 泛型和类型安全的容器>eg: List<St ...
- Java编程思想(后)
Java编程思想(后) 持有对象 如果一个程序只包含固定数量的且其生命期都是已知的对象,那么这是一个非常简单的程序. Java中的库基本类型: List, Set, Queue和Map --- 称为集 ...
- JAVA编程思想——分析阅读
需要源码.JDK1.6 .编码风格参考阿里java规约 7/12开始 有点意识到自己喜欢理论大而泛的模糊知识的学习,而不喜欢实践和细节的打磨,是因为粗心浮躁导致的么? cron表达式使用 设计能力.领 ...
- Java编程思想 笔记
date: 2019-09-06 15:10:00 updated: 2019-09-24 08:30:00 Java编程思想 笔记 1. 四类访问权限修饰词 \ 类内部 本包 子类 其他包 publ ...
- 《Java编程思想》读书笔记(二)
三年之前就买了<Java编程思想>这本书,但是到现在为止都还没有好好看过这本书,这次希望能够坚持通读完整本书并整理好自己的读书笔记,上一篇文章是记录的第一章到第十章的内容,这一次记录的是第 ...
- 《Java编程思想》读书笔记(五)
前言:本文是<Java编程思想>读书笔记系列的最后一章,本章的内容很多,需要细读慢慢去理解,文中的示例最好在自己电脑上多运行几次,相关示例完整代码放在码云上了,码云地址:https://g ...
- 《Java编程思想》学习笔记(二)——类加载及执行顺序
<Java编程思想>学习笔记(二)--类加载及执行顺序 (这是很久之前写的,保存在印象笔记上,今天写在博客上.) 今天看Java编程思想,看到这样一道代码 //: OrderOfIniti ...
- Java编程思想 (1~10)
[注:此博客旨在从<Java编程思想>这本书的目录结构上来检验自己的Java基础知识,只为笔记之用] 第一章 对象导论 1.万物皆对象2.程序就是对象的集合3.每个对象都是由其它对象所构成 ...
- MyEclipse导入ant项目——Java编程思想
北门煎饼东门串儿: <JAVA编程思想(Think in Java)>一书中提供了大量源代码,可是项目是用ant构建的.对于用惯了eclipse,netbeans等IDE的同学们可能有些手 ...
- Java编程思想总结笔记Chapter 2
本章介绍Java程序的基本组成部分,体会到Java中几乎一切都是对象. 第二章 一切都是对象 目录: 2.1 用引用操纵对象 2.2 必须由你创建所有对象 2.3 永远不需要销毁对象 2.4 创建 ...
随机推荐
- C# WinForm TreeView选择父节点子节点全选
//设置标志,防止死循环 bool check = false; public void TV_AfterCheck(object sender, TreeViewEventArgs e) { if ...
- Android零基础入门第28节:轻松掌握RelativeLayout相对布局
原文:Android零基础入门第28节:轻松掌握RelativeLayout相对布局 在前面三期中我们对LinearLayout进行了详细的解析,LinearLayout也是我们用的比较多的一个布局. ...
- html5创建的sqlite存放为止以及在手机中的位置
C:\Users\xiaoai\AppData\Local\Google\Chrome\User Data\Default\databases\http_127.0.0.1_8020 如图:这是用bh ...
- 在Delphi中编辑res文件
先用记事本编写一个rc的文件.如内容为:_Comms RCData Comms.jpg Comms.jpg为图片名称,然后在这个rc文件和图片拷贝到delphi安装路径的bin文件夹里面,选中这两个文 ...
- 配置我的Ubuntu Server记(包括桌面及VNC,SSH,NTP,NFS服务) good
跟老板申请买了一台配置相对较好的计算机回来做GPU计算,当然,不能独享,所以做成服务器让大家都来用. 这篇日志用来记录配置过程中遇到的一些问题,以方便下次不需要到处谷歌度娘. 安装Server版系统 ...
- C++ 王者归来:对编程语言的需求总结为四个:效率,灵活,抽象,生产率(C++玩的是前三个,Java和C#玩的是后两个)
Why C++ ? 王者归来(转载) 因为又有人邀请我去Quora的C2C网站去回答问题去了,这回是 关于 @laiyonghao 的这篇有点争议的博文<2012 不宜进入的三个技术点>A ...
- git实战经验(很实用)
推荐学习git很好的网站https://www.breakyizhan.com/git/216.html 以下内容,虽然编排不行,但是请认真的读下去,都是自己平时请自操作的,放心使用. 这是个人的gi ...
- ORACLE(emp)表习题与答案
因为答案都是小编自己写的,解法可能有多种,如果您觉得我的解法有误,希望您有时间给我留言. 一.习题 (1) 查询20部门的所有员工信息. SELECT * FROM emp where deptno ...
- Web前端——JavaScript练习
Js练习 显示和隐藏,改变display属性(点击查看图片) 关键代码: e.style.display = "block"; e.style.display = "no ...
- Python一基本数据类型(dict)
一. 字典的简单介绍 字典(dict)是python中唯一的一个映射类型.他是以{ }括起来的键值对组成. 在dict中key是 唯一的. 在保存的时候, 根据key来计算出一个内存地址. 然后 ...