public class app
{
public static void main(String[] args)
{
Secretar secretar=new Secretar();
DocumentFactory factory=new MSOFactory();
secretar.setDocumentFactory(factory);
secretar.makeTableDocument().print();
secretar.makeTextDocument().print();
factory=new OOOFactory();
secretar.setDocumentFactory(factory);
secretar.makeTableDocument().print();
secretar.makeTextDocument().print();
}
}
class Secretar // - Client
{
private DocumentFactory docFactory;
public void setDocumentFactory(DocumentFactory factory)
{
this.docFactory=factory;
}
public TextDocument makeTextDocument()
{
return docFactory.createTextDocument();
}
public TableDocument makeTableDocument()
{
return docFactory.createTableDocument();
}
}
abstract class DocumentFactory
{
abstract TextDocument createTextDocument();
abstract TableDocument createTableDocument();
}
abstract class TextDocument
{
abstract void print();
}
abstract class TableDocument
{
abstract void print();
}
class WordDocument extends TextDocument
{
public void print(){ System.out.println("MS Word Document");}
}
class ExcelDocument extends TableDocument
{
public void print(){ System.out.println("MS Excel Table");}
}
class OpenDocument extends TextDocument
{
public void print(){ System.out.println("Open Office Document");}
}
class OpenTableDocument extends TableDocument
{
public void print(){ System.out.println("Open Office Table");}
}
class MSOFactory extends DocumentFactory
{
public TextDocument createTextDocument()
{
return new WordDocument();
}
public TableDocument createTableDocument()
{
return new ExcelDocument();
}
}
class OOOFactory extends DocumentFactory
{
public TextDocument createTextDocument()
{
return new OpenDocument();
}
public TableDocument createTableDocument()
{
return new OpenTableDocument();
}
}
четверг, 10 марта 2011 г.
Абстрактная фабрика
Обеспечивает общий способ создания родственных или связанных объектов без указания конкретных классов:
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий