package com.interview.design.pattern.creational; /** * Created_By: stefanie * Date: 14-12-2 * Time: 下午8:43 */ public class FactoryPattern { static interface Sender{ public void send(); } static class EMailSender implements Sender { @Override public void send() { System.out.println("send by email"); } } static class SMSSender implements Sender { @Override public void send() { System.out.println("send by SMS"); } } /** * Simple Factory Method * USING static method */ static class SenderFactory{ public static Sender produceMail(){ return new EMailSender(); } public static Sender produceSms(){ return new SMSSender(); } } /** * Factory Pattern * define a interface Factory, and implements Factory for each Object * Open Close Principle: open for extension, close for modification */ public interface Provider{ public Sender produce(); } public class EMailSenderProvider implements Provider{ @Override public Sender produce() { return new EMailSender(); } } public class SMSSenderProvider implements Provider{ @Override public Sender produce() { return new SMSSender(); } } }