package practice;
interface DrawCircle {
public void drawCircle(int radius, int x, int y);
}
class RedCircle implements DrawCircle {
public void drawCircle(int radius, int x, int y) {
System.out.println("Drawing Circle[red,radius:" + radius + ",x:" + x + ",y:" + y + "]");
}
}
class GreenCircle {
public void drawCircle(int radius, int x, int y) {
System.out.println("Drawing Circle[red,radius:" + radius + ",x:" + x + ",y:" + y + "]");
}
}
abstract class Shape {
protected DrawCircle drawCircle;
public Shape(DrawCircle drawCircle) {
this.drawCircle = drawCircle;
}
public abstract void draw();
}
class Circle extends Shape{
private int x,y,radius;
public Circle(int x,int y,int radius,DrawCircle drawCircle) {
super.drawCircle=drawCircle;
this.x=x;
this.y=y;
this.radius=radius;
}
public void draw() {
drawCircle.drawCircle(radius, x, y);
}
}
public class DrawCirclMain {
public static void main(String[] args) {
Shape redCircle=new Circle(100, 100, 10, new redCircle());
Shape greenCircle=new Circle(200, 200, 10, new greenCircle());
redCircle.draw();
greenCircle.draw();
}
}