package com.cheng.zenofdesignpatterns.principle.ocp; import java.text.NumberFormat; import java.util.ArrayList; /** * 书店售书类 */ public class BookStore { private final static ArrayList<IBook> bookList1 = new ArrayList<>(); private final static ArrayList<IBook> bookList2 = new ArrayList<>(); private final static ArrayList<IBook> bookList3 = new ArrayList<>(); // static静态模块初始化数据,实际项目中一般由持久层完成 static { bookList1.add(new NovelBook("天龙八部", 3200, "金庸")); bookList1.add(new NovelBook("巴黎圣母院", 5600, "雨果")); bookList1.add(new NovelBook("悲惨世界", 3500, "雨果")); bookList1.add(new NovelBook("金瓶梅", 4300, "兰陵笑笑生")); bookList2.add(new OffNovelBook("天龙八部", 3200, "金庸")); bookList2.add(new OffNovelBook("巴黎圣母院", 5600, "雨果")); bookList2.add(new OffNovelBook("悲惨世界", 3500, "雨果")); bookList2.add(new OffNovelBook("金瓶梅", 4300, "兰陵笑笑生")); bookList3.add(new ComputerBook("Think in Java", 4300, "Bruce Eckel", "编程")); } // 模拟书店买书 public static void sell() { NumberFormat formatter = NumberFormat.getCurrencyInstance(); formatter.setMaximumFractionDigits(2); System.out.println("----------书店卖出去的书籍数据如下:----------"); for (IBook book : bookList1) { System.out.println("书籍名称:" + book.getName() + "\t书籍作者:" + book.getAuthor() + "\t书籍价格:" + formatter.format(book.getPrice()/100.0) + "元"); } System.out.println(); System.out.println(); System.out.println("----------书店卖出去的书籍数据如下:----------"); for (IBook book : bookList2) { System.out.println("书籍名称:" + book.getName() + "\t书籍作者:" + book.getAuthor() + "\t书籍价格:" + formatter.format(book.getPrice()/100.0) + "元"); } System.out.println(); System.out.println(); System.out.println("----------书店卖出去的书籍数据如下:----------"); for (IBook book : bookList3) { System.out.println("书籍名称:" + book.getName() + "\t书籍作者:" + book.getAuthor() + "\t书籍价格:" + formatter.format(book.getPrice()/100.0) + "元"); } } }