Add all 23 GoF design pattern implementations (2026-06-13)
This commit is contained in:
28
03-behavioral/visitor/PerimeterCalculator.java
Normal file
28
03-behavioral/visitor/PerimeterCalculator.java
Normal file
@@ -0,0 +1,28 @@
|
||||
package visitor;
|
||||
|
||||
/**
|
||||
* Concrete Visitor 2 — calculates perimeter.
|
||||
* Adding this visitor added zero code to Shape, Circle, Rectangle, Triangle.
|
||||
*/
|
||||
public class PerimeterCalculator implements ShapeVisitor {
|
||||
|
||||
@Override
|
||||
public void visit(Circle c) {
|
||||
double p = 2 * Math.PI * c.getRadius();
|
||||
System.out.printf(" Perimeter of %s = %.2f%n", c.getName(), p);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(Rectangle r) {
|
||||
double p = 2 * (r.getWidth() + r.getHeight());
|
||||
System.out.printf(" Perimeter of %s = %.2f%n", r.getName(), p);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visit(Triangle t) {
|
||||
// Simplified: assume isoceles — base + 2 equal sides approximated
|
||||
double side = Math.sqrt(Math.pow(t.getBase() / 2, 2) + Math.pow(t.getHeight(), 2));
|
||||
double p = t.getBase() + 2 * side;
|
||||
System.out.printf(" Perimeter of %s = %.2f%n", t.getName(), p);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user