Sobes.tech
Middle
45

public class RefEx { public interface DocumentProcessor { void process(Document document); } public static class PdfProcessor implements DocumentProcessor { @Override public void process(Document document) { // PDF өңдеу үшін арнайы логика } } public static class DocxProcessor implements DocumentProcessor { @Override public void process(Document document) { // Word өңдеу үшін арнайы логика } } public static class XmlProcessor implements DocumentProcessor { @Override public void process(Document document) { // XML өңдеу үшін арнайы логика } } public static class DocumentService { private final Map<DocumentType, DocumentProcessor> processors = Map.of( DocumentType.PDF, new PdfProcessor(), DocumentType.DOCX, new DocxProcessor(), DocumentType.XML, new XmlProcessor() ); public void process(Document[] documents) { for (Document doc : documents) { // Құжатты өңдеудің жалпы логикасы processors.get(doc.type).process(doc); } } } }

Сұралған компаниялар
экзон

AI-дан жауап

sobes.tech AI

Көрсетілген кодта әртүрлі құжат түрлерін өңдеу үшін стратегия паттерні жүзеге асырылған. DocumentProcessor интерфейсі process әдісін анықтайды, ол нақты кластарда PdfProcessor, DocxProcessor және XmlProcessor арқылы жүзеге асырылады.

DocumentService класы құжат түрін сәйкес өңдеушімен байланыстыратын картаға ие. process әдісін шақыру кезінде құжаттар массиві үшін әртүрлі өңдеу логикасы іске асырылады.

Мұндай тәсіл жаңа форматтарды оңай кеңейтуге мүмкіндік береді, жаңа DocumentProcessor жүзеге асыруларын қосу және DocumentService картасын жаңарту арқылы.

Қолдану мысалы:

Document[] docs = {new Document(DocumentType.PDF), new Document(DocumentType.DOCX)};
DocumentService service = new DocumentService();
service.process(docs);

Бұл кодтың оқылуын және қолдауын жақсартады, күрделі шарт операторларын болдырмайды.