代码之家  ›  专栏  ›  技术社区  ›  cobby

在战略模式中使用工厂模式?

  •  0
  • cobby  · 技术社区  · 2 年前

    假设我有基于某些策略修改的文章:

    public class Article {
       String header;
       String bodyText;
    }
    

    处理器对象:

    public class ArticleProcessor {
    
       IModifyStrategy modifyStrategy;
       Article article;
       ...
       ...
       modifyStrategy.modifyHeadline(article.getHeader());
       ...
       modifyStrategy.modifyBodyText(article.getBodyText());
    }
    

    修正策略:

    public interface IModifyStrategy {
        
        String modifyHeadline(String defaultHeader);
        String modifyBodyText(String defaultBody);
    }
    

    现在我想在我的文章中添加一位作者,他需要首先根据一些条件创建,所以我考虑创建一个工厂,并将其添加到ArticleProcessor中,如下所示:

    public class ArticleProcessor {
    
       AuthorFactory authorFactory;
       IModifyStrategy modifyStrategy;
       Article article;
       ...
       ...
       modifyStrategy.modifyHeadline(article.getHeader());
       ...
       modifyStrategy.modifyBodyText(article.getBodyText());
       ...
       article.addAuthor(authorFactory.createAuthor(someCondition))
    }
    

    然而,到目前为止,我喜欢我的IModifyStrategy收集了一篇文章的所有修改。通过引入如上所述的工厂,我将在代码中的不同位置进行文章修改(例如,在IModifyStrategy和ArticleModifier中)。 所以我想在IModifyStrategy中加入逻辑:

    public interface IModifyStrategy {
        
        String modifyHeadline(String defaultHeader);
        String modifyBodyText(String defaultBody);
        void createAuthor(someCondition)
    
    }
    

    这样,我就可以将我对一篇文章的所有修改集中在代码中的一个地方,为我提供对一篇文章可能进行的修改的良好概述。那么,这里应该选择什么样的模式呢?这个意图实际上是一个创造性的意图,但是使用策略模式的可读性/可理解性会好得多。 另一种选择是在战略中使用工厂。这会不会太过工程化?

    0 回复  |  直到 2 年前