• 建造者模式


    一、大致构造

    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());
            
        }
    
    }
  • 相关阅读:
    CSS命名法
    CSS伪类
    CSS总结
    CSS应用给网页元素的几种方式总结
    CSS语法小记
    细谈WEB标准
    Spark 个人实战系列(1)--Spark 集群安装
    HBase 实战(1)--HBase的数据导入方式
    shell 脚本实战笔记(9)--linux自动批量添加用户
    shell 脚本实战笔记(8)--ssh免密码输入执行命令
  • 原文地址:https://www.cnblogs.com/honger/p/5961959.html
Copyright © 2020-2023  润新知