美文网首页
Java23种设计模式之创建型模式「建造者模式」

Java23种设计模式之创建型模式「建造者模式」

作者: MrLimLee | 来源:发表于2020-07-28 16:59 被阅读0次

    建造者模式

    • 将一个复杂对象的构建与表示分离开来,使用多个简单的对象一步一步构建成一个复杂的对象,它提供了一种创建对象的最佳方式
    • 用于构建多样化的对象,替代对象的构建函数,更加自由化

    定义对象

    /**
     * 产品对象
     *
     * @author Mr.lim
     */
    public class ProductInfo {
    
        // 产品名称
        private String name;
    
        // 产品期限
        private String term;
    
        // 开发团队
        private String team;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getTerm() {
            return term;
        }
    
        public void setTerm(String term) {
            this.term = term;
        }
    
        public String getTeam() {
            return team;
        }
    
        public void setTeam(String team) {
            this.team = team;
        }
    
        @Override
        public String toString() {
            return "ProductInfo{" +
                    "name='" + name + '\'' +
                    ", term='" + term + '\'' +
                    ", team='" + team + '\'' +
                    '}';
        }
    }
    

    定义功能接口

    public interface ProductInfoBuilder {
    
        void builderProductInfoName();
    
        void builderProductInfoTerm();
    
        void builderProductInfoTeam();
    
        ProductInfo startProduct();
    }
    

    定义功能接口实现,这里可以根据需求,实现不能的功能

    public class ProductInfoBuilderImpl implements ProductInfoBuilder {
    
        private ProductInfo productInfo;
    
        public ProductInfoBuilderImpl () {
            System.out.println("Builder");
            productInfo = new ProductInfo();
        }
    
        @Override
        public void builderProductInfoName() {
            System.out.println("设定项目名称相关逻辑");
            productInfo.setName("项目名称");
        }
    
        @Override
        public void builderProductInfoTerm() {
            System.out.println("设定项目周期相关逻辑");
            productInfo.setTerm("项目周期");
        }
    
        @Override
        public void builderProductInfoTeam() {
            System.out.println("设定项目开发团队相关逻辑");
            productInfo.setTeam("项目开发团队");
        }
    
        @Override
        public ProductInfo startProduct() {
            return productInfo;
        }
    }
    

    导演:管理建造出来的实例的依赖关系

    /**
     *
     * @author Mr.lim
     */
    public class Director {
    
        public ProductInfo startProductDirector(ProductInfoBuilder productInfoBuilder) {
            productInfoBuilder.builderProductInfoName();
            productInfoBuilder.builderProductInfoTerm();
            productInfoBuilder.builderProductInfoTeam();
            return productInfoBuilder.startProduct();
        }
    
        public static void main(String[] args) {
            Director director = new Director();
            ProductInfo productInfo = director.startProductDirector(new ProductInfoBuilderImpl());
            System.out.println(productInfo.toString());
        }
    }
    
    

    输出的结果:

    Builder
    设定项目名称相关逻辑
    设定项目周期相关逻辑
    设定项目开发团队相关逻辑
    ProductInfo{name='项目名称', term='项目周期', team='项目开发团队'}

    相关文章

      网友评论

          本文标题:Java23种设计模式之创建型模式「建造者模式」

          本文链接:https://www.haomeiwen.com/subject/oztqrktx.html