// Advertising interface
interface AdContent {
void display();
}
// Basic advertising implementation category
class BasicAd implements AdContent {
@Override
public void display() {
System.out.println("Displaying basic ad.");
}
}
// Advertising Decorators Base Class
abstract class AdDecorator implements AdContent {
protected AdContent decoratedAd;
public AdDecorator(AdContent decoratedAd) {
this.decoratedAd = decoratedAd;
}
@Override
public void display() {
decoratedAd.display();
}
}
// Video ad decorator
class VideoAdDecorator extends AdDecorator {
public VideoAdDecorator(AdContent decoratedAd) {
super(decoratedAd);
}
@Override
public void display() {
super.display();
System.out.println("Displaying video ad.");
}
}
// Picture ad decorator
class ImageAdDecorator extends AdDecorator {
public ImageAdDecorator(AdContent decoratedAd) {
super(decoratedAd);
}
@Override
public void display() {
super.display();
System.out.println("Displaying image ad.");
}
}