public void Accept(CharacterVisitor visitor) { foreach (var character in Characters) { Console.WriteLine(character.GetType().Name); } }
/// <summary> /// Demonstrates using the visitor pattern on classes that uses interfaces /// </summary> public void PerformVisitOnCharacters() { var collection = new CharacterCollection(); var characterVisitor = new CharacterVisitor(); characterVisitor.Visit(collection); }
public void ComicBookVisitorShouldVisitUniverseskWithoutException() { //Arrange var chVisitor = new CharacterVisitor(); //Act var exception = Record.Exception(() => Client.DoVisit(_components, chVisitor)); //Assert exception.ShouldBeNull(); }
//执行访问者 public void RunVisitor(CharacterVisitor visitor) { soldiers.ForEach(s => s.RunVisitor(visitor)); enemies.ForEach(e => e.RunVisitor(visitor)); }
public void Accept(CharacterVisitor characterVisitor) { characterVisitor.VisitBoss(this); }
public void Accept(CharacterVisitor characterVisitor) { characterVisitor.VisitMonster(this); }
public abstract void RunVisitor(CharacterVisitor visitor);
protected abstract void PlayDeathSound();//没有必要使用多态,模版方法,只需要一个参数就可以,这里是为了学习而学习 // protected abstract void PlayDeathEffect(); public override void RunVisitor(CharacterVisitor visitor) { visitor.VisitSoldier(this); }
// protected abstract void PlayDmgEffect(); //没有必要使用多态,模版方法,只需要一个参数就可以,这里是为了学习而学习 public override void RunVisitor(CharacterVisitor visitor) { visitor.VisitEnemy(this); }