首页 > 其他分享 >12.16日报

12.16日报

时间:2024-12-17 16:36:00浏览次数:8  
标签:String 日报 visitor void 12.16 Visitor public name

今天完成设计模式实验二十五访问者模式,以下为实验内容:

实验 25:访问者模式

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

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

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

 
   

 

 

[实验任务一]:打包员

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

实验要求:

1.  画出对应的类图;

 

2.  提交源代码;

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

    // 访问者接口
    interface Visitor {
        void visit(ItemA itemA);
        void visit(ItemB itemB);
    }

    // 打包员访问者
    class Packer implements Visitor {
        @Override
        public void visit(ItemA itemA) {
            System.out.println("Packing " + itemA.getName() + " in box.");
        }

        @Override
        public void visit(ItemB itemB) {
            System.out.println("Packing " + itemB.getName() + " in bubble wrap.");
        }
    }

    // 购物车项接口
    interface Item {
        void accept(Visitor visitor);
        String getName();
    }

    // 具体购物车项A
    class ItemA implements Item {
        private String name;

        public ItemA(String name) {
            this.name = name;
        }

        @Override
        public String getName() {
            return name;
        }

        @Override
        public void accept(Visitor visitor) {
            visitor.visit(this);
        }
    }

    // 具体购物车项B
    class ItemB implements Item {
        private String name;

        public ItemB(String name) {
            this.name = name;
        }

        @Override
        public String getName() {
            return name;
        }

        @Override
        public void accept(Visitor visitor) {
            visitor.visit(this);
        }
    }

    // 购物车
    class ShoppingCart {
        private List<Item> items = new ArrayList<>();

        public void add(Item item) {
            items.add(item);
        }

        public void remove(Item item) {
            items.remove(item);
        }

        public void accept(Visitor visitor) {
            for (Item item : items) {
                item.accept(visitor);
            }
        }
    }

    // 客户端测试类
    public class VisitorPatternTest {
        public static void main(String[] args) {
            ShoppingCart cart = new ShoppingCart();
            cart.add(new ItemA("Apple"));
            cart.add(new ItemB("Laptop"));

            Visitor packer = new Packer();
            cart.accept(packer);
        }
    }

 

3. 注意编程规范。

 

 

 

标签:String,日报,visitor,void,12.16,Visitor,public,name
From: https://www.cnblogs.com/lijianlongCode13/p/18612795

相关文章

  • 2024.12.16 周一
    2024.12.16周一Q1.1000Monocarpisplayingyetanothercomputergame.Andyetagain,hischaracteriskillingsomemonsters.Thereare$n$monsters,numberedfrom$1$to$n$,andthe$i$-thofthemhas$a_i$healthpointsinitially.Monocarp'schara......
  • 12.16随笔
    这里是12.16随笔代码留档:packagecome;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;import......
  • 2024.12.16~2024.12.21
    2024.12.16听说有人拿我的博客当乐子看,我想说,乐子人看什么都是乐子。。。所以我是否要将博客写的幽默深刻一点呢?我觉得也不是不行,但可能没有那个能力早上起床听到闹钟没有起来,心里想着:起床需要爆发力,睡一会再重启,然后我又成功的晚起了。。。上午非常好啊,就是被一道单调队列优......
  • anaconda基础安装(2024.12.16)
     首先我们要知道的是环境,我们运行或者说创建我们的项目时。需要很多的软件包算法函数调用。而不同的项目需要不同函数甚至不同版本的软件包。为了更好的运行自己的项目,我们就需要用到anaconda这个软件去创造这个虚拟环境,将各个项目的环境隔离开,避免冲突。总之先开始教学吧。......
  • CosyVoice 2.0 支持双向流式语音合成;无问芯穹开源全模态理解端侧模型丨RTE 开发者日报
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑......
  • 大模型日报 2024-12-15
    大模型日报2024-12-15大模型资讯标题:KDD2025|多标签节点分类场景下,阿里安全&浙大对图神经网络增强发起挑战摘要:本文介绍了阿里安全与浙江大学在多标签节点分类场景下的图神经网络增强技术的研究成果,论文《Correlation-AwareGraphConvolutio......
  • 12.11日报
    今天完成软件设计实验二十四模板方法模式,以下为今日实验内容:实验24:模板方法模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解模板方法模式的动机,掌握该模式的结构;2、能够利用模板方法模式解决实际问题。     [实验任务一]:数据库连接对......
  • 12.12日报
    今天完成机器学习B实验,并且进行软件需求分析大作业验收,以下为今日实验部分内容实验五:BP神经网络算法实现与测试一、实验目的深入理解支持向量机(SVM)的算法原理,能够使用Python语言实现支持向量机的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。  二、实验内......
  • 12.6日报
    今天完成软件构造实验以及软件企业文化的论文,以下为实验内容,Flash动画的编写:<template><div><!--顶部导航栏--><divstyle="height:60px;background-color:#fff;display:flex;align-items:center;border-bottom:1pxsolid#ddd"><......
  • 11.28日报
    今日完成软件设计实验二十备忘录模式,以下为实验内内容:实验20:备忘录模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解备忘录模式的动机,掌握该模式的结构;2、能够利用备忘录模式解决实际问题。[实验任务一]:多次撤销改进课堂上的“用户信息操作撤销”实例,使得系......