このクラスがあったとします
Animal.java
public class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public void shout() {
/* must be override */
}
public String getName() {
return name;
}
}
Driver.java
import java.util.ArrayList;
import java.util.List;
public class Driver {
public static void main(String[] args) {
List<Animal> animals = new ArrayList<Animal>();
animals.add(new Animal("Dog") {
@Override
public void shout() {
System.out.println(getName() + " sounds like: woof woof woof");
}
});
animals.add(new Animal("Cat") {
@Override
public void shout() {
System.out.println(getName() + " sounds like: meow meow meow-ow");
}
});
for(Animal a : animals)
a.shout();
}
}
メソッドshout()または他のプログラマーを実装するように私を後押しするにはどうすればよいですか? Animal クラスを抽象化し、Animal を拡張する Dog、Cat などのクラスを作成する理由がないとします。
デザインパターンはありますか?