package com.csair.design.pattern;
/**
* 一个抽象工厂可以生产人(成人,小孩),和对应的玩具
* 抽象工厂生产一系列产品,产品间有对应关系:比如说,什么样的人,玩什么样的玩具
* @author ppt
*/
public class AbstractFactory {
public static void main(String[] args) {
Factory factory = new AdultFactory();
play(factory);
Factory factory1 = new ChildFactory();
play(factory1);
}
public static void play(Factory factory) {
System.out.println(factory.getPerson().getName()+" plays " + factory.getToy().getName());
}
}
interface Factory {
Person getPerson();
Toy getToy();
}
class AdultFactory implements Factory{
@Override
public Person getPerson() {
return new Adult();
}
@Override
public Toy getToy() {
return new AdultToy();
}
}
class ChildFactory implements Factory{
@Override
public Person getPerson() {
return new Child();
}
@Override
public Toy getToy() {
return new ChildToy();
}
}
interface Person {
String getName();
}
class Adult implements Person{
@Override
public String getName() {
return "adult(tom)";
}
}
class Child implements Person{
@Override
public String getName() {
return "child(jack)";
}
}
interface Toy {
String getName();
}
class AdultToy implements Toy {
@Override
public String getName() {
return "adult(basketball)";
}
}
class ChildToy implements Toy {
@Override
public String getName() {
return "child(pingpong)";
}
}
设计模式之抽象工厂模式
最新推荐文章于 2020-05-29 21:41:28 发布