首页 > 其他分享 >今日总结12.2

今日总结12.2

时间:2023-12-02 15:47:28浏览次数:38  
标签:总结 name Visitor void visit 12.2 println 今日 public

实验 25:访问者模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解访问者模式的动机,掌握该模式的结构;

2、能够利用访问者模式法解决实际问题。

 

[实验任务一]:打包员

在我们课堂上的“购物车”的例子中,增加一个新的访问者:打包员,负责对购物车中货物装包。

实验要求:

1. 提交源代码,不要提交类图;

2. 注意编程规范。

package Visitor;

 

public interface Product {

 

    void accept(Visitor visitor);

}

package Visitor;

 

public class Apple implements Product {

    @Override

    public void accept(Visitor visitor) {

        visitor.visit(this);

    }

}

package Visitor;

 

public class Book implements Product {

    @Override

    public void accept(Visitor visitor) {

        visitor.visit(this);

    }

}

package Visitor;

 

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);

}

package Visitor;

 

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 + "买书");

    }

}

package Visitor;

 

public class Packer extends Visitor {

    @Override

    public void visit(Apple apple) {

        System.out.println("打包员" + name + "给苹果打包");

    }

 

    @Override

    public void visit(Book book) {

        System.out.println("打包员" + name + "给书打包");

    }

}

package Visitor;

 

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 + "直接计算书的价格");

 

    }

}

package Visitor;

 

import java.util.ArrayList;

import java.util.List;

 

public class BuyBasket {

 

    private List<Product> products = new ArrayList();

 

    public void accept(Visitor visitor) {

        for (Product product : products) {

            product.accept(visitor);

        }

    }

 

    public void addProduct(Product p) {

        products.add(p);

    }

 

    public void removeProduct(Product p) {

        products.remove(p);

    }

}

package Visitor;

 

public class Client {

 

    public static void main(String[] args) {

        BuyBasket buyBasket = new BuyBasket();

 

        buyBasket.addProduct(new Apple());

        buyBasket.addProduct(new Book());

 

        Visitor saler = new Saler();

        saler.setName("张三");

        System.out.println("----收银员----");

        buyBasket.accept(saler);

 

        Visitor packer = new Packer();

        packer.setName("李四");

        System.out.println("----打包员----");

        buyBasket.accept(packer);

 

        Visitor customer = new Customer();

        customer.setName("王五");

        System.out.println("----顾客----");

        buyBasket.accept(customer);

    }

}

标签:总结,name,Visitor,void,visit,12.2,println,今日,public
From: https://www.cnblogs.com/psh888/p/17871672.html

相关文章

  • 2023-2024-1 20231323《计算机基础与程序设计》第十周学习总结
    2023-2024-120231323《计算机基础与程序设计》第十周学习总结作业信息所属课程2023-2024-1-计算机基础与程序设计作业要求2023-2024-1计算机基础与程序设计第周作业作业目标自学教材《计算机科学概论》第12,13,14章《C语言程序设计》第9章并完成云班课测试作业......
  • 2023-2024-1 20231420 《计算机基础与程序设计》第十周学习总结
    2023-2024-120231420《计算机基础与程序设计》第十周学习总结1.作业信息这个作业属于哪个课程2023-2024-1《计算机基础与程序设计》这个作业要求在哪里2023-2024-1计算机基础与程序设计第十周作业这个作业的目标1.学习《计算机科学概论》第12,13,14章并完成云班课......
  • 2023-2024-1 20232323《网络空间安全导论》第四周学习总结
    教材学习内容总结教材学习中的问题和解决过程问题:什么事系统安全院里的基本原则解决方法:查阅资料询问AI 基于AI的学习   ......
  • 12.2闲话
    树剖树剖调了好久的板子终于过了,主要原因是建线段树出了问题,警钟长鸣本来应该是t[q].dat=a[T[l].rnk];然后我打的是t[q].dat=a[l];DFS序2点击查看代码#include<bits/stdc++.h>#defineMAXM0X66CCFF#defineintlonglongnamespaceIO{inlinevoidclose(){std::i......
  • 2023-2024-1 20231419 《计算机基础与程序设计》第十周学习总结
    2023-2024-120231419《计算机基础与程序设计》第十周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK10这个作业的目标自学《计算机科学概......
  • 12.2
    均分纸牌P1031[NOIP2002提高组]均分纸牌-洛谷|计算机科学教育新生态(luogu.com.cn)这道题贪心没有想出来,有时间再看看。。。。。。。。。 砍龙头哈哈哈P2695骑士的工作-洛谷|计算机科学教育新生态(luogu.com.cn)这道题排序+贪心乱搞就行,然后发现了佬的解法,可......
  • 2023年12月1日总结
    更好地观看总结今天是12月的第一天!美丽,晶莹的冬天!今天早上起来把昨天那道ULR#1】光伏元件给改了。这里说几点要注意的地方。建模网上都有,也比较典型,这里就不说了。就是这道题我先写了原始对偶,没过,然后写ssp,还是没有过。然后我开始怀疑人生了?后来我发现,对于上下界相等的边,就......
  • 总结-解决国内服务器、nas 、docker访问国外网站、更新镜像、遇到的问题
    proxy可以通过修改环境变量,添加代理协议、服务器ip和端口,可以解决访问github、google等网站的问题,同时会遇到国内外分流、ipv6访问等问题。详细可以寻找projectX。解决DNS的问题运营商的dns存在着污染的情况,导致一些网页解析到了无法访问的ip,可以通过以下方法解决。修改DNS......
  • 2023.12.1——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:休息明日计划:学习......
  • 12.1每日总结
    实验25:访问者模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解访问者模式的动机,掌握该模式的结构;2、能够利用访问者模式法解决实际问题。 [实验任务一]:打包员在我们课堂上的“购物车”的例子中,增加一个新的访问者:打包员,负责对购物车中货物装包。实验要......