2024/12/04

软件设计实验二十五

[实验任务一]:打包员
在我们课堂上的“购物车”的例子中,增加一个新的访问者:打包员,负责对购物车中货物装包。
实验要求:
1.    画出对应的类图;
 
2.    提交源代码;
public interface Product {

    void accept(Visitor visitor);

}

public class Apple implements Product {
    @Override
    public void accept(Visitor visitor) {
        visitor.visit(this);
    }
}

public class Book implements Product{
    @Override
    public void accept(Visitor visitor) {
        visitor.visit(this);
    }
}

public abstract class Visitor {

    protected String name;
    public void setName(String name){
        this.name = name;
    }

    public abstract void visit(Apple apple);
    public abstract void visit(Book book);

}

public class Customer extends Visitor{
    @Override
    public void visit(Apple apple) {
        System.out.println("顾客"+name+"选苹果");
    }

    @Override
    public void visit(Book book) {
        System.out.println("顾客"+name+"买书");
    }
}

public class Packager extends Visitor{
    @Override
    public void visit(Apple apple) {
        System.out.println("打包员"+name+"打包apple~");
    }

    @Override
    public void visit(Book book) {
        System.out.println("打包员"+name+"打包book~");
    }
}

public class Saler extends Visitor{
    @Override
    public void visit(Apple apple) {
        System.out.println("收银员"+
                name+"给苹果过称,计算价格");
    }

    @Override
    public void visit(Book book) {
        System.out.println("收银员"+name+"直接计算书的价格");
    }
}

public class BuyBasket{

    private ArrayList list = new ArrayList();

    public void accept(Visitor visitor){
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            ((Product)iterator.next()).accept(visitor);
        }
    }

    public void addProduce(Product product){
        list.add(product);
    }

    public void removeProduce(Product product){
        list.remove(product);
    }

}

public class App
{
    public static void main(String[] args) {

        // 创建产品实例
        Product apple = new Apple();
        Product book = new Book();

        // 创建一个购物篮并添加产品
        BuyBasket basket = new BuyBasket();
        basket.addProduce(apple);
        basket.addProduce(book);

        // 创建顾客访客
        Customer customer = new Customer();
        customer.setName("王瑞");
        System.out.println("顾客互动:");
        basket.accept(customer);  // 顾客访问产品

        System.out.println();  // 为了输出更清晰

        // 创建打包员访客
        Packager packager = new Packager();
        packager.setName("张一捆");
        System.out.println("打包员互动:");
        basket.accept(packager);  // 打包员访问产品

        System.out.println();  // 为了输出更清晰

        // 创建收银员访客
        Saler saler = new Saler();
        saler.setName("龚涵彬");
        System.out.println("收银员互动:");
        basket.accept(saler);  // 收银员访问产品
    }
}

 

posted @ 2024-12-04 20:01  伐木工熊大  阅读(6)  评论(0)    收藏  举报