The code example that you've supplied doesn't actually imply any factory-like behaviors. The fact that this class is abstract isn't really that relevant either. Here is a more concrete example implementation of your example:
public abstract class MyString { private String data; public MyString(String initialValue){ data = initialValue; } public void append(MyString toAppend, int appendCount){ for(int i = 0; i < appendCount; i ++){ data = data + toAppend.data; } } public String toString(){ return data; } public abstract notRelevantMethod(); }
For this class (which I hope looks alot like your example above) the append method, allows you to pass another instance of MyString into a method that you're calling on MyString. In my example, the append method doesn't use any of the abstract methods defined on MyString, but it could. If it did, then it is typically following the 'template' programming pattern. However I couldn't think of a good example that used templating and had a method which took an argument of the abstract type.