parent
e13be0a36b
commit
7a789cda65
@ -0,0 +1,25 @@
|
|||||||
|
package com.msb.visitor;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/17 19:42
|
||||||
|
* @Description: com.msb.visitor
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Board
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/17 19:42
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Board extends ComputerPart {
|
||||||
|
@Override
|
||||||
|
public void accept(Visitor visitor) {
|
||||||
|
visitor.visitBoard(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getPrice() {
|
||||||
|
return 800;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package com.msb.visitor;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/17 19:44
|
||||||
|
* @Description: com.msb.visitor
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName CompanyVisitor
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/17 19:44
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class CompanyVisitor implements Visitor {
|
||||||
|
|
||||||
|
double totalPrice = 0.0;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visitCpu(Cpu cpu) {
|
||||||
|
this.totalPrice += cpu.getPrice() * 0.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visitMemory(Memory memory) {
|
||||||
|
this.totalPrice += memory.getPrice() * 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visitBoard(Board board) {
|
||||||
|
this.totalPrice += board.getPrice() * 0.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getTotalPrice() {
|
||||||
|
return totalPrice;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
package com.msb.visitor;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/17 19:48
|
||||||
|
* @Description: com.msb.visitor
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Computer
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/17 19:48
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Computer {
|
||||||
|
private Cpu cpu;
|
||||||
|
private Memory memory;
|
||||||
|
private Board board;
|
||||||
|
|
||||||
|
public Computer(Cpu cpu, Memory memory, Board board) {
|
||||||
|
this.cpu = cpu;
|
||||||
|
this.memory = memory;
|
||||||
|
this.board = board;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void accept(Visitor visitor) {
|
||||||
|
this.cpu.accept(visitor);
|
||||||
|
this.board.accept(visitor);
|
||||||
|
this.memory.accept(visitor);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
Computer computer = new Computer(new Cpu(), new Memory(), new Board());
|
||||||
|
|
||||||
|
Visitor personelVisitor = new PersonelVisitor();
|
||||||
|
computer.accept(personelVisitor);
|
||||||
|
System.out.println(personelVisitor.getTotalPrice());
|
||||||
|
|
||||||
|
Visitor companyVisitor = new CompanyVisitor();
|
||||||
|
computer.accept(companyVisitor);
|
||||||
|
System.out.println(companyVisitor.getTotalPrice());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.msb.visitor;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/17 19:38
|
||||||
|
* @Description: com.msb.visitor
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName ComputerPart
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/17 19:38
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public abstract class ComputerPart {
|
||||||
|
public abstract void accept(Visitor visitor);
|
||||||
|
public abstract double getPrice();
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package com.msb.visitor;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/17 19:40
|
||||||
|
* @Description: com.msb.visitor
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Cpu
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/17 19:40
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Cpu extends ComputerPart {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(Visitor visitor) {
|
||||||
|
visitor.visitCpu(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getPrice() {
|
||||||
|
return 1000;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package com.msb.visitor;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/17 19:42
|
||||||
|
* @Description: com.msb.visitor
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName Memory
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/17 19:42
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class Memory extends ComputerPart {
|
||||||
|
@Override
|
||||||
|
public void accept(Visitor visitor) {
|
||||||
|
visitor.visitMemory(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getPrice() {
|
||||||
|
return 900;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package com.msb.visitor;/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/17 19:43
|
||||||
|
* @Description: com.msb.visitor
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.omg.IOP.TAG_ORB_TYPE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*@ClassName PersonelVisitor
|
||||||
|
*@Description TODO
|
||||||
|
*@Author bingor
|
||||||
|
*@Date 2022/10/17 19:43
|
||||||
|
*@Version 3.0
|
||||||
|
*/
|
||||||
|
public class PersonelVisitor implements Visitor {
|
||||||
|
|
||||||
|
double totalPrice = 0.0;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visitCpu(Cpu cpu) {
|
||||||
|
this.totalPrice += cpu.getPrice() * 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visitMemory(Memory memory) {
|
||||||
|
this.totalPrice += memory.getPrice() * 0.9;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visitBoard(Board board) {
|
||||||
|
this.totalPrice += board.getPrice() * 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getTotalPrice() {
|
||||||
|
return totalPrice;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.msb.visitor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author bingor
|
||||||
|
* @Date 2022/10/17 19:39
|
||||||
|
* @Description: com.msb.visitor
|
||||||
|
* @Version: 1.0
|
||||||
|
*/
|
||||||
|
public interface Visitor {
|
||||||
|
public void visitCpu(Cpu cpu);
|
||||||
|
public void visitMemory(Memory memory);
|
||||||
|
public void visitBoard(Board board);
|
||||||
|
public double getTotalPrice();
|
||||||
|
}
|
Loading…
Reference in new issue