// Path: src/main/java/helloworld/SplitHelloWorld.java
// public class SplitHelloWorld implements HelloWorld {
// 
//     private HelloWorldInterjection helloWorldInterjection;
// 
//     private HelloWorldObject helloWorldObject;
// 
//     private static final String separator = " ";
// 
//     private static final String terminator = "!";
// 
//     public SplitHelloWorld(HelloWorldInterjection helloWorldInterjection, HelloWorldObject helloWorldObject) {
//         this.helloWorldInterjection = helloWorldInterjection;
//         this.helloWorldObject = helloWorldObject;
//     }
// 
//     @Override
//     public String helloWorld() {
//         return helloWorldInterjection.interjection() + separator + helloWorldObject.object() + terminator;
//     }
// 
//     public interface HelloWorldInterjection {
// 
//         public String interjection();
//     }
// 
//     public interface HelloWorldObject {
// 
//         public String object();
//     }
// 
//     public static class DefaultInterjection implements HelloWorldInterjection {
// 
//         @Override
//         public String interjection() {
//             return "Hello";
//         }
//     }
// 
// }


import helloworld.SplitHelloWorld;
package helloworld.creational.abstract_factory;


/**
 * @author yihua.huang@dianping.com
 */
public class JavaSplitHelloWorldFactory implements SplitHelloWorldFactory {

    @Override
// Path: src/main/java/helloworld/SplitHelloWorld.java
// public class SplitHelloWorld implements HelloWorld {
// 
//     private HelloWorldInterjection helloWorldInterjection;
// 
//     private HelloWorldObject helloWorldObject;
// 
//     private static final String separator = " ";
// 
//     private static final String terminator = "!";
// 
//     public SplitHelloWorld(HelloWorldInterjection helloWorldInterjection, HelloWorldObject helloWorldObject) {
//         this.helloWorldInterjection = helloWorldInterjection;
//         this.helloWorldObject = helloWorldObject;
//     }
// 
//     @Override
//     public String helloWorld() {
//         return helloWorldInterjection.interjection() + separator + helloWorldObject.object() + terminator;
//     }
// 
//     public interface HelloWorldInterjection {
// 
//         public String interjection();
//     }
// 
//     public interface HelloWorldObject {
// 
//         public String object();
//     }
// 
//     public static class DefaultInterjection implements HelloWorldInterjection {
// 
//         @Override
//         public String interjection() {
//             return "Hello";
//         }
//     }
// 
// }


// Path: src/main/java/helloworld/creational/abstract_factory/JavaSplitHelloWorldFactory.java
import helloworld.SplitHelloWorld;

package helloworld.creational.abstract_factory;


/**
 * @author yihua.huang@dianping.com
 */
public class JavaSplitHelloWorldFactory implements SplitHelloWorldFactory {

    @Override
    public SplitHelloWorld.HelloWorldInterjection createHelloWorldInterjection() {