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());
            
        }
    
    }
  • 相关阅读:
    工作中的体悟和经验
    java中List的toArray方法
    Arthas干货总结
    内部类访问外部类的方法
    PriorityBlockingQueue 源码分析
    ArrayBlockingQueue 源码解析
    Kafka 读书笔记--日志索引
    Mybatis源码解析之--谈谈${}
    Mybatis源码分析之--浅析ResultSetHandler
    linux命令--ll
  • 原文地址:https://www.cnblogs.com/honger/p/5961959.html
Copyright © 2011-2022 走看看