首页 > 其他分享 >12.1每日总结

12.1每日总结

时间:2023-12-01 22:36:42浏览次数:30  
标签:总结 name package visitor void visit public 12.1 每日

实验 25:访问者模式

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

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

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

 

[实验任务一]:打包员

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

实验要求:

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

2. 注意编程规范。

package test25;

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


package test25;

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


package test25;

import java.util.ArrayList;
import java.util.Iterator;

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

}



package test25;

public class Client {

    public static void main(String[] args) {
        Product b1 = new Book();
        Product b2 = new Book();
        Product a1 = new Apple();
        Visitor visitor;

        BuyBasket basket = new BuyBasket();
        basket.addProduce(b1);
        basket.addProduce(b2);
        basket.addProduce(a1);

        visitor = new Packager();
        visitor.setName("张三");
        basket.accept(visitor);
    }

}


package test25;

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

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

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


package test25;

public interface Product {

    void accept(Visitor visitor);

}


package test25;

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

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

}

  

标签:总结,name,package,visitor,void,visit,public,12.1,每日
From: https://www.cnblogs.com/louwangshayu/p/17870979.html

相关文章

  • 12.1每日总结
    创建JTextField//创建默认默认文本框JTextFieldtextField=newJTextField();12newJTextField(),创建默认文本框newJTextField(intcolumns),创建文本框并设定可以显示的列数newJTextField(Stringtext),创建文本框并指定内容newJTextField(Stringtext,intcolumns),......
  • 12.2每日总结
    final:Final用于修饰类、成员变量和成员方法。final修饰的类,不能被继承(String、StringBuilder、StringBuffer、Math,不可变类),其中所有的方法都不能被重写(这里需要注意的是不能被重写,但是可以被重载,这里很多人会弄混),所以不能同时用abstract和final修饰类(abstract修饰的类是抽象类......
  • 2023-2024-1 20231424《计算机基础与程序设计》第10周学习总结
    2023-2024-120231424《计算机基础与程序设计》第10周学习总结作业信息作业属于的课程<班级链接>(2022-2023-1-计算机基础与程序设计)作业要求<作业要求>(2022-2023-1计算机基础与程序设计第一周作业)作业目标《计算机科学概论》第12,13,14章和《C语言程序设计》第9......
  • 12.1每日总结
    今日完成代码200时间5h学习内容:看了看阅读数目《软工》,写了阅读笔记。写了大数据的hbase作业,写了软件构造的作业调用接口给图片加特效写了高飞作业2  实验25:访问者模式 [实验任务一]:打包员在我们课堂上的“购物车”的例子中,增加一个新的访问者:打包员,负责对购物车中货......
  • 2023-2024 20231313《计算机基础与程序设计》第十周学习总结
    2023-202420231313《计算机基础与程序设计》第十周学习总结作业速达作业课程班级链接作业要求计算机基础与程序设计第十周学习总结作业内容计算机科学概论第12,13,14章《C语言程序设计》第9章并完成云班课测试,信息系统、数据库与SQL、人工智能与专家系统、人工神经......
  • 每日博客
    实验24:模板方法模式packagerjsj.no24; publicabstractclassOperator{    publicabstractvoidconnDB();     publicvoidopenDB(){        System.out.println("---打开数据库---");    }     publicvoiduseDB(){       ......
  • linux源码趣读总结
    总结linux源码趣读花了半个月左右,看完了闪客的linux源码趣读。感觉之前上的操作系统原理课程只能给你一个模糊的印象,啊,有这个概念来着,有这个算法来着。比起从理论到实践的文字游戏,我还是更喜欢从实践讲理论的脚踏实地。从阅读linux-0.11源码,了解操作系统的构成。所谓的总结......
  • 第5次软工任务_实现与项目总结_10组虎纠吃游实评
    github源码链接:https://github.com/prettyKuromi/hujiu/tree/master微信小程序测试链接提供测试账号:demouser,密码:1231231,也可自行注册新账号(由于小程序类目个人开发者受限及无法通过认证,无法通过审核并发布小程序,扫码进入体验版后请点击右上角…,选择开发调试-打开调试,即可测试......
  • 12.01每日总结
    packageorg.example;importjavax.swing.*;importjava.awt.*;publicclassMainextendsJFrame{publicstaticJFramejFrame;publicstaticJPaneljPanel=newJPanel();publicstaticJScrollPanejScrollPane=newJScrollPane(jPanel,ScrollPaneConstant......
  • Hadoop 一些脚本总结
    1.各个模板分开启动/停止1.整体启动/停止HDFSstart-dfs.sh/stop-dfs.sh2.整体启动/停止YARNstart-yarn.sh/stop-yarn.sh2.各个服务组件逐一启动/停止1.分别启动/停止HDFS组件hdfs--daemonstart/stopnamenode/datanode/secondarynamenode2.分别启动/停止YARN......