Prototype design pattern in Java

陈瀚玥
2023-12-01

package com.design.prototype;

/**
 * Prototype design pattern in Java
 */
public class Book {
    private int bid;
    private String bname;

    public int getBid() {
        return bid;
    }

    public void setBid(int bid) {
        this.bid = bid;
    }

    public String getBname() {
        return bname;
    }

    public void setBname(String bname) {
        this.bname = bname;
    }

    @Override
    public String toString() {
        return "Book{" +
                "bid=" + bid +
                ", bname='" + bname + '\'' +
                '}';
    }
}

package com.design.prototype;

import java.util.ArrayList;
import java.util.List;

/**
 * Prototype design pattern in Java
 */
public class BookShop implements Cloneable {
    private String shopName;
    List<Book> books = new ArrayList<>();

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public List<Book> getBooks() {
        return books;
    }

    public void setBooks(List<Book> books) {
        this.books = books;
    }

    public void loadData() {
        for (int i = 1; i <= 10; i++) {
            Book b = new Book();
            b.setBid(i);
            b.setBname("Book " + i);
            getBooks().add(b);
        }
    }

    @Override
    public String toString() {
        return "BookShop{" +
                "shopName='" + shopName + '\'' +
                ", books=" + books +
                '}';
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        BookShop shop = new BookShop();

        for (Book b : getBooks()) {
            shop.getBooks().add(b);
        }

        return shop;
    }
}

package com.design.prototype;

/**
 * Prototype design pattern in Java
 */
public class Demo {
    public static void main(String[] args) throws CloneNotSupportedException {
        BookShop bs = new BookShop();
        bs.setShopName("Novelty");
        bs.loadData();
        
        BookShop bs1 = (BookShop) bs.clone();
        bs1.setShopName("A1");
        bs.getBooks().remove(2);
        System.out.println(bs);
        System.out.println(bs1);

    }
}


 类似资料:

相关阅读

相关文章

相关问答