意图
表示一个作用于某个对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
示例代码
interface Pets {
public void accept(Human human);
}
class Cat implements Pets {
@Override
public void accept(Human human) {
human.buy(this);
}
}
class Dog implements Pets {
@Override
public void accept(Human human) {
human.buy(this);
}
}
class Mouse implements Pets {
@Override
public void accept(Human human) {
human.buy(this);
}
}
interface Human {
public void buy(Cat cat);
public void buy(Dog dog);
public void buy(Mouse mouse);
}
class Tom implements Human{
@Override
public void buy(Cat cat) {
System.out.println("Tom bought a cat");
}
@Override
public void buy(Dog dog) {
System.out.println("Tom bought a dog");
}
@Override
public void buy(Mouse mouse) {
System.out.println("Tom bought a mouse");
}
}
public class Client {
public static void main(String[] args) {
Tom tom=new Tom();
Cat cat=new Cat();
cat.accept(tom);
}
}
输出结果
Tom bought a cat