//Creatorjava
public abstract class Creator
{
/**
*looks like a factory
*contains some products and some process methods
*/
protected Product duct;
abstract String processProduct();
abstract String processProductSpecial();
public String Operation()
{
return processProduct(); // FactoryMethod for implemention;
}
}
//ConcreteProductjava
public class ConcreteProduct extends Product
{
public ConcreteProduct()
{
Systemoutprintln(construct the ConcreteProduct object);
}
public String makeString(String str)
{
return This is the product after processing:+str;
}
}
//Productjava
public abstract class Product
{
public abstract String makeString(String str);
}
//ConcreteCreatorAjava
public class ConcreteCreatorA extends Creator
{
/**
* You can write some other class like this to override
* the same methods do diffrent thing;
*/
public ConcreteCreatorA()
{
duct=new ConcreteProduct();
Systemoutprintln(instanced a product);
}
public String processProduct()
{
Systemoutprintln(product A:);
return ductmakeString(Make @#a product);
}
public String processProductSpecial()
{
Systemoutprintln(special product B:);
//add another method here
return ductmakeString(Make Special @#B product);
}
}
//TestFactoryMethodjava
public class TestFactoryMethod
{
public TestFactoryMethod()
{
}
public static void main(String[] arg)
{
ConcreteCreatorA cc=new ConcreteCreatorA();
Systemoutprintln(ccOperation());
Systemoutprintln(ccprocessProductSpecial());
}
}