zoukankan      html  css  js  c++  java
  • 建造者模式

    一、大致构造

    1、导演者类

    2、建造抽象类

    3、产品抽象类

    4、产品具体类

    5、建造具体类

    二、代码(建造模式,相当于将一堆零件组装成一个对象)

    1、建造抽象类

    Builder.java

    package com.builderModel;
    
    public interface Builder {
    
        public void BuildPart1();
        public void BuildPart2();
        public Product getProduct();
        
    }

    2、产品标识类

    package com.builderModel;
    
    public interface Product {
    
    }

    3、具体产品类

    Article.java

    package com.builderModel;
    
    public class Article implements Product {
    
        private String title;
        
        private String content;
    
        public String getTitle() {
            return title;
        }
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        public String getContent() {
            return content;
        }
    
        public void setContent(String content) {
            this.content = content;
        }
    
        @Override
        public String toString() {
            return "Article [title=" + title + ", content=" + content + "]";
        }
        
        
        
    }

    AutoMessage.java

    package com.builderModel;
    
    public class AutoMessage implements Product {
    
        private String from;
        
        private String content;
    
        public String getFrom() {
            return from;
        }
    
        public void setFrom(String from) {
            this.from = from;
        }
    
        public String getContent() {
            return content;
        }
    
        public void setContent(String content) {
            this.content = content;
        }
    
        @Override
        public String toString() {
            return "Message [from=" + from + ", content=" + content + "]";
        }
        
        
        
        
    }

    4、具体产品构造者

    ArticleBuilder.java

    package com.builderModel;
    
    public class ArticleBuilder implements Builder {
        
        Article article = new Article();
    
        @Override
        public void BuildPart1() {
            article.setTitle("hello");
            
        }
    
        @Override
        public void BuildPart2() {
            article.setContent("world");
        }
    
        @Override
        public Product getProduct() {
            return article;
        }
    
    }

    AutoMessageBuilder.java

    package com.builderModel;
    
    public class AutoMessageBuilder implements Builder {
        
        private AutoMessage message = new AutoMessage();
    
        @Override
        public void BuildPart1() {
            message.setFrom("客户");
        }
    
        @Override
        public void BuildPart2() {
            message.setContent("你的网页出错了");
        }
    
        @Override
        public Product getProduct() {
            
            return message;
        }
    
    }

    5、导演者类

    Director.java

    package com.builderModel;
    
    public class Director {
        private Builder builder = null;
        
        public Director(Builder builder) {
            this.builder = builder;
            this.builder.BuildPart1();
            this.builder.BuildPart2();
            
        }
        
        public Product getProduct() {
            return this.builder.getProduct();
        }        
    }

    6、测试类

    Test.java

    package com.builderModel;
    
    public class Test {
        
        
        public static void main(String[] args) {
            
            Builder builder = new AutoMessageBuilder();
            
            Director director = new Director(builder);
            
            AutoMessage autoMessage = (AutoMessage) director.getProduct();
            
            System.out.println(autoMessage.toString());
            
        }
    
    }
  • 相关阅读:
    Elasticsearch5.x批量插入数据(Java)
    Elasticsearch5.x创建索引(Java)
    Kibana5.x界面简要介绍(含x-pack插件)
    CentOS6.5安装Kibana5.3.0
    Elasticsearch5.x Head插件安装
    CentOS6.5安装Elasticsearch5.3.0
    jenkins发布Spring Cloud(单机版)
    prometheus 监控docker
    gitlab迁移单个项目
    python使用pika操作rabbitmq
  • 原文地址:https://www.cnblogs.com/honger/p/5961959.html
Copyright © 2011-2022 走看看