public class Customer {
public static void main(String[] args) {
Sandwich sandwich = new Sandwich();
sandwich.setBeverage(new ColaBeverage());
sandwich.setSideMenu(new CookieSideMenu());
System.out.println(sandwich);
}
}
적용 후
public class BurgerKing {
public static void main(String[] args) {
Sandwich sandwich = new TunaSandwichFactory(new TunaSandwichSidePartsFactory()).createSandwich();
System.out.println(sandwich.getBeverage().getClass());
System.out.println(sandwich.getSideMenu().getClass());
}
}
3. 실제 사례
3-1. 자바
public class DocumentBuilderFactoryExample {
public static void main(String[] args) throws ParserConfigurationException, IOException, SAXException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("src/main/resources/config.xml"));
System.out.println(document.getDocumentElement());
}
}
3-2. 스프링
@Configuration
public class FactoryBeanConfig {
@Bean
public ShipFactory shipFactory() {
return new ShipFactory();
}
}
public class FactoryBeanExample {
public static void main(String[] args) {
// ApplicationContext applicationContext = new ClassPathXmlApplicationContext("config.xml");
// Ship whiteship = applicationContext.getBean("whiteship", Ship.class);
// System.out.println(whiteship.getName());
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(FactoryBeanConfig.class);
Ship bean = applicationContext.getBean(Ship.class);
System.out.println(bean);
}
}