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)
Комментариев нет:
Отправить комментарий