私はあなたがしても修正できDogクラスの振る舞いを管理するためのメソッドを公開する場合は、このアプローチの利点があるbehaviours
public interface Behaviour { void action(); }
public class Bark implements Behaviour {...}
public class ChaseCat implements Behaviour { ... }
public class Eat implements Behaviour {...}
public class Sleep implements Behaviour {...}
... others
public class Dog {
private List<Behaviour> behaviours;
public Dog(Behaviour...behaviors) { this.behaviors = Arrays.asList(behaviours); }
public void play() {
// choose random behaviour
behaviour.action();
}
}
Dog dog1 = new Dog(new ChaseCat(), new Bark());
Dog dog2 = new Dog(new Eat(), new Sleep());
のための単一Dogクラスおよび組成物を用いてこれを実装したいですアプリケーションが動作しているときの動作例えば、猫が犬を恐れている場合、しばらくその行動を取り除く方法があり、犬はそれをしません。その後、後で追加することができます。あなたはポイントを得る。
共通点は何ですか? – shmosel
@shmoselいいえ、彼らは共通の方法を共有していません。 –
それでは、なぜあなたはそれらを一般的なタイプに合わせようとしますか? – shmosel