美文网首页
java设计模式04(建造者模式)

java设计模式04(建造者模式)

作者: 刺风有道 | 来源:发表于2019-04-09 23:33 被阅读0次

    建造者模式是一种对象创建型模式,它将客户端(调用者)与包含多个部件的复杂对象的创建过程分离,客户端无须知道对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可。建造者模式关注如何一步一步地创建一个复杂对象,不同的建造者定义了不同的创建过程。

    定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    建造者模式的结构与实现:
    1.Builder(抽象建造者):创建一个产品对象的各个部件指定抽象接口,且创建一个返回产品对象的方法。 Builder既可以时抽象类,也可以时接口。

    public abstract class Builder {
        
        protected Product product=new Product();
        
        public abstract void buildHead();
        
        public abstract void buildHand();
        
        public abstract void buildFoot();
        
        public Product getResult() {
            return product;
        }
    
    }
    

    2.ConcreteBuilder(具体建造者):实现了Builder接口,实现各个部件的具体构造和装配方法,定义并明确所创建的复杂对象,还可以提供一个方法返回创建好的产品对象。

    public class ConcreteBuilder extends Builder {
    
        @Override
        public void buildHead() {
             product.setHead("head");
        }
    
        @Override
        public void buildHand() {
            product.setHand("hand");
        }
    
        @Override
        public void buildFoot() {
            product.setFoot("foot");
        }
    
    }
    

    3.Product(产品):被构造的复杂对象,包含多个组成部件,具体建造者创建它的内部表示并定义它的装配过程。

    public class Product {
    
        private String head;
        
        private String hand;
        
        private String foot;
    
        public String getHead() {
            return head;
        }
    
        public void setHead(String head) {
            this.head = head;
        }
    
        public String getHand() {
            return hand;
        }
    
        public void setHand(String hand) {
            this.hand = hand;
        }
    
        public String getFoot() {
            return foot;
        }
    
        public void setFoot(String foot) {
            this.foot = foot;
        }
    
        @Override
        public String toString() {
            return "Product [head=" + head + ", hand=" + hand + ", foot=" + foot + "]";
        }
        
    }
    

    4.Director(指挥者):负责安排复杂对象的建造次序,控制复杂对象的制造过程,指挥者与抽象建造者之间存在关联关系,可以在方法中调用建造者对象的部件构造和装配方法。

    public class Director {
    
        private Builder builder;
        
        public Director(Builder builder) {
            this.builder=builder;
        }
        
        public Product construct() {
            builder.buildHead();
            builder.buildHand();
            builder.buildFoot();
            return builder.getResult();
        }
    }
    

    5.Test:

    public class Test {
    
        public static void main(String[] args) {
            Builder builder = new ConcreteBuilder();
            Director director = new Director(builder);
            Product product = director.construct();
            System.out.println(product);
        }
    }
    

    相关文章

      网友评论

          本文标题:java设计模式04(建造者模式)

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