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

每日总结11.30

时间:2023-11-30 22:12:38浏览次数:32  
标签:总结 java name visitor 每日 11.30 void Visitor public

访问者模式
1、理解访问者模式的动机,掌握该模式的结构;
2、能够利用访问者模式法解决实际问题。

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

Client.java
public class Client {

    public static void main(String[] args) {
        Product b1 = new Book();
        Product a1 = new Apple();
        Visitor visitor;
        
        BuyBasket basket = new BuyBasket();
        basket.addProduct(b1);
        basket.addProduct(a1);
        
        visitor = new Customer();
        visitor.setName("张三");
        basket.accept(visitor);
        System.out.println("**************************************************");

        visitor = new Packer();
        visitor.setName("李四");
        basket.accept(visitor);
        System.out.println("**************************************************");

        visitor = new Saler();
        visitor.setName("王五");
        basket.accept(visitor);
    }

}

Customer.java
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 + "买书");
    }
    
}

Packer.java
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 + "给书打包");
    }
}

Product.java
public interface Product {
    void accept(Visitor visitor);
}

Saler.java
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 + "计算书的价格");
    }

}

Visitor.java
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);
}

Apple.java
public class Apple implements Product{

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

Book.java
public class Book implements Product{

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

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

public class BuyBasket {

    private ArrayList list = new ArrayList();
    
    public void accept(Visitor visitor) {
        Iterator i = list.iterator();
        
        while(i.hasNext()) {
            ((Product)i.next()).accept(visitor);
        }
    }
    public void addProduct(Product product) {
        list.add(product);
    }

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

 

标签:总结,java,name,visitor,每日,11.30,void,Visitor,public
From: https://www.cnblogs.com/-GYP/p/17868480.html

相关文章

  • 11.30二次探测法解决冲突
    设哈希表长为14,哈希函数是H=key%11,表中已有数据的关键字为15,38,61,84共四个,现要将关键字为49的元素加到表中,用二次探测法解决冲突,则放入的位置是(9)。15的位置是4,38的位置是5,61的位置是6,84的位置为749对应5和38冲突所以要用二次探索就是跳跃式的加数直到不重复且不超过哈希表长{1......
  • 2023.11.30 练习
    CF1887C首先容易想到区间加需转化为差分,字典序的比较呢就考虑二分哈希。二分第一个不一样的位置,这个位置也一定是差分数组第一个不一样的。把哈希如果放到线段树上,那么在线段树上二分即可。我们依次处理修改的时候,顺便处理当前的最小的字典序。我们这里如果采用主席树,那么会......
  • 11.30每日总结
    实验一:百度机器翻译SDK实验一、实验要求 任务一:下载配置百度翻译Java相关库及环境(占10%)。 任务二:了解百度翻译相关功能并进行总结,包括文本翻译-通用版和文本翻译-词典版(占20%)。 任务三:完成百度翻译相关功能代码并测试调用,要求可以实现中文翻译成英文,英文翻译成中文(占30%)。......
  • 11.30
    今天上课王建民老师让我们做了一个小测试,那几个图我画的还是不好,感觉有很多不懂。     ......
  • 面试题总结
    1、通信协议通信协议通常使用分层架构来组织和管理通信过程。常见的分层架构包括以下几层:物理层:物理层负责处理物理媒介上的信号传输,如电缆、光缆、无线信号等。数据链路层:数据链路层负责将物理层传来的信号转换为数据帧,并在相邻节点之间进行数据传输。网络层:网络层负责......
  • OSPF的8种状态机总结,小白必看!
    OSPF概述在OSPF网络中,为了交换路由信息,邻居设备之间首先要建立邻接关系,邻居(Neighbors)关系和邻接(Adjacencies)关系是两个不同的概念。邻居关系OSPF设备启动后,会通过OSPF接口向外发送Hello报文,收到Hello报文的OSPF设备会检查报文中所定义的参数,如果双方一致就会形成邻居关系,两端设备互......
  • [转载]控制台程序隐藏的四种方法总结
    原帖地址找不到了。学习计算机,往往先从Windows环境下学习编程,学习编程,往往从C学起,学习C,往往又从控制台程序学习,何为控制台,就是那个黑框白字的界面。对于这样一个最初认为奇陋无比而现在认为无所不能的编程平台,有时候需要将界面隐藏起来。那么如何做呢?方法1:在头文件下加上一句预......
  • iOS开发_UIKit框架使用总结
    1、经常使用的1.1基础UIView、UILabel、UIImage、UIColor、UIImageView、UITextField、UIButton、UIFont1.2列表UIScrollView、UITableView、UICollectionView、UITextViewUICollectionViewCell、UITableViewCell1.3其他UIViewController2、偶尔使用的2.1功能专用UIPickerView(......
  • 11.30每日总结
    我要把今天作为我的纪念日,哈哈哈,零分选手一路逆袭最后拿了满分的故事,天呐,我要默默踩了多少狗屎才能积下这福泽,换来这美好的一天啊。体育老师怎么就这么面善呢,怎么“过了”这两个字从他嘴里说出来就这么好听呢。总之,现在11.30就是我的幸运日啦!......
  • 操作系统OS学习总结
    操作系统OS笔记操作系统概述操作系统定义操作系统,是计算机系统中最基本、最重要的系统软件,是其它软件的支撑。控制和管理计算机系统的硬件和软件资源,合理的组织计算机工作流程,并为用户使用计算机提供公共和基本的服务。操作系统组成计算机采用的都是冯·诺依曼体系结构,一台计......