//creator.java
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;
}
}
//concreteproduct.java
public class concreteproduct extends product
{
public concreteproduct()
{
system.out.println("construct the concreteproduct object");
}
public string makestring(string str)
{
return "this is the product after processing:"+str;
}
}
//product.java
public abstract class product
{
public abstract string makestring(string str);
}
//concretecreatora.java
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();
system.out.println("instanced a product");
}
public string processproduct()
{
system.out.println("product a:");
return duct.makestring("make @#a product");
}
public string processproductspecial()
{
system.out.println("special product b:");
//add another method here
return duct.makestring("make special @#b product");
}
}
//testfactorymethod.java
public class testfactorymethod
{
public testfactorymethod()
{
}
public static void main(string[] arg)
{
concretecreatora cc=new concretecreatora();
system.out.println(cc.operation());
system.out.println(cc.processproductspecial());
}
}
闽公网安备 35060202000074号