1.用JSON方式实现一个原型模式的深克隆,并画出UML图
public class Book implements Cloneable {
    private String title;
    private double price;
    private List<String> imges = new ArrayList<String>();
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public List<String> getImges() {
        return imges;
    }
    public void setImges(List<String> imges) {
        this.imges = imges;
    }
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
    @Override
    public String toString() {
        return "Book{" +
                "title=‘" + title + ‘\‘‘ +
                ", price=" + price +
                ", imges=" + imges +
                ‘}‘;
    }
}
public interface IPrototype<T> {
    public T clone(T src);
    public T deepClone(T src);
}
public class BookPrototype implements IPrototype<Book> {
    @Override
    public Book clone(Book src) {
        try {
            return (Book)src.clone();
        }catch (Exception e){
            return null;
        }
    }
    @Override
    public Book deepClone(Book src) {
        String bookString = JSONObject.toJSONString(src);
        Book book = JSONObject.parseObject(bookString, Book.class);
        return book;
    }
}
public class Test {
    public static void main(String[] args) {
        Book b1 = new Book();
        b1.setTitle("java设计模式");
        b1.setPrice(30.56);
        b1.getImges().add("img1");
        System.out.println(b1);
        BookPrototype bookPrototype = new BookPrototype();
        Book b2 = bookPrototype.clone(b1);
        b2.getImges().add("img2");
        System.out.println(b2);
        System.out.println(b1==b2);
        System.out.println(b1.getImges()==b2.getImges());
        System.out.println("========================================");
        Book b3 = bookPrototype.deepClone(b1);
        b3.getImges().add("img3");
        System.out.println(b3);
        System.out.println(b1==b3);
        System.out.println(b1.getImges()==b3.getImges());
    }
}

2.请列举1-3个需要用到建造者模式的业务场景。
A.厨师做菜 B.老师授课 C.工厂生产线
原文:https://www.cnblogs.com/it-szp/p/12394185.html