parent
c29641bcb4
commit
76d7dcd0df
@ -0,0 +1,13 @@
|
||||
package visitor;
|
||||
|
||||
public class CPU implements ComputerPart{
|
||||
@Override
|
||||
public void accept(Visitor v) {
|
||||
v.visitCPU(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getPrice() {
|
||||
return 1880;
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package visitor;
|
||||
|
||||
public class CompanyVisitor implements Visitor{
|
||||
double totalPrice = 0;
|
||||
@Override
|
||||
public void visitCPU(CPU cpu) {
|
||||
totalPrice += cpu.getPrice() * 0.7;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitMemory(Memory memory) {
|
||||
totalPrice += memory.getPrice() * 0.7;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitMainBoard(MainBoard mainBoard) {
|
||||
totalPrice += mainBoard.getPrice() * 0.7;
|
||||
}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package visitor;
|
||||
|
||||
public class Computer {
|
||||
private ComputerPart cpu = new CPU();
|
||||
private ComputerPart memory = new Memory();
|
||||
private ComputerPart mainBoard = new MainBoard();
|
||||
|
||||
public void accept(Visitor v){
|
||||
this.cpu.accept(v);
|
||||
this.memory.accept(v);
|
||||
this.mainBoard.accept(v);
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
package visitor;
|
||||
|
||||
public interface ComputerPart {
|
||||
void accept(Visitor v);
|
||||
double getPrice();
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package visitor;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
Computer computer = new Computer();
|
||||
StudentVisitor visitor = new StudentVisitor();
|
||||
computer.accept(visitor);
|
||||
System.out.println(visitor.totalPrice);
|
||||
|
||||
CompanyVisitor visitor2 = new CompanyVisitor();
|
||||
computer.accept(visitor2);
|
||||
System.out.println(visitor2.totalPrice);
|
||||
}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package visitor;
|
||||
|
||||
public class MainBoard implements ComputerPart{
|
||||
@Override
|
||||
public void accept(Visitor v) {
|
||||
v.visitMainBoard(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getPrice() {
|
||||
return 1200.5;
|
||||
}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package visitor;
|
||||
|
||||
public class Memory implements ComputerPart{
|
||||
@Override
|
||||
public void accept(Visitor v) {
|
||||
v.visitMemory(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getPrice() {
|
||||
return 800;
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package visitor;
|
||||
|
||||
public class StudentVisitor implements Visitor{
|
||||
double totalPrice = 0;
|
||||
@Override
|
||||
public void visitCPU(CPU cpu) {
|
||||
totalPrice += cpu.getPrice() * 0.9;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitMemory(Memory memory) {
|
||||
totalPrice += memory.getPrice() * 0.8;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitMainBoard(MainBoard mainBoard) {
|
||||
totalPrice += mainBoard.getPrice() * 0.95;
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package visitor;
|
||||
|
||||
public interface Visitor {
|
||||
void visitCPU(CPU cpu);
|
||||
void visitMemory(Memory memory);
|
||||
void visitMainBoard(MainBoard mainBoard);
|
||||
}
|
Loading…
Reference in new issue