Product.java:
package gendwang.cisco.com;
public interface Product
{
public String getType();
}
ConcreteProduct1.java:
package gendwang.cisco.com;
public class ConcreteProduct1 implements Product
{
public ConcreteProduct1()
{
}
public String getType()
{
return "ConcreteProduct1";
}
}
ConcreteProduct2.java:
package gendwang.cisco.com;
public class ConcreteProduct2 implements Product
{
public ConcreteProduct2()
{
}
public String getType()
{
return "ConcreteProduct2";
}
}
Factory.java:
package gendwang.cisco.com;
public interface Factory
{
public Product getInstance();
}
ConcreteFactory1.java:
package gendwang.cisco.com;
public class ConcreteFactory1 implements Factory
{
public ConcreteFactory1()
{
}
public Product getInstance()
{
return new ConcreteProduct1();
}
}
ConcreteFactory2.java:
package gendwang.cisco.com;
public class ConcreteFactory2 implements Factory
{
public ConcreteFactory2()
{
}
public Product getInstance()
{
return new ConcreteProduct2();
}
}
Test.java:
package gendwang.cisco.com;
public class Test
{
public static void main(String[] args)
{
Factory factory1 = new ConcreteFactory1();
Product product1 = factory1.getInstance();
System.out.println("One product:" + product1.getType() + " is created");
Factory factory2 = new ConcreteFactory2();
Product product2 = factory2.getInstance();
System.out.println("One product:" + product2.getType() + " is created");
}
}