您当前的位置: 首页 > 

命运之手

暂无认证

  • 2浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【设计模式】【07】建造者模式

命运之手 发布时间:2022-04-12 10:43:34 ,浏览量:2

使用场景

建造者模式,英文名Builder Pattern

该模式使用一个单独的类,来封装对象的构建过程

适用场景:

对象构建或初始化工作特别麻烦,让用户手动去构建或初始化很容易出错,或者要调用特别多的函数

建造者模式和工厂模式的区别

单从功能上来说,建造者模式和工厂模式的功能很像

但如果大家两种模式都使用过,就会发现区别还是特别大的,很容易区分

工厂模式侧重于集中生产产品对象,是对多种产品的一种集中管理,产品对象的创建工作往往很简单

建造者模式则是侧重于构建单个对象,使用这个模式,往往是由于单个对象的构建工作十分繁琐

实现代码


	public class Product {
	
	    Long productId;
	    String productName;
	    String productModel;
	
	    public static class Builder {
	
	        Long productId;
	        String productName;
	        String productModel;
	
	        public Builder name(String name) {
	            productName = name;
	            return this;
	        }
	
	        public Builder model(String model) {
	            productModel = model;
	            return this;
	        }
	
	        //构造前需要对参数进行检查
	        //参数检查成功后,再动态分配产品id,顺序不能反,否则会浪费id资源
	        public Product build() {
	            if (!checkProductName())
	                return null;
	            if (!checkProductModel())
	                return null;
	            generateProductId();
	            Product product = new Product();
	            product.productId = productId;
	            product.productName = productName;
	            product.productModel = productModel;
	            return product;
	        }
	
	        //检查产品名称是否合法
	        protected boolean checkProductName() {
	            return true;
	        }
	
	        //检查产品型号是否存在
	        protected boolean checkProductModel() {
	            return true;
	        }
	
	        //为产品分配id
	        protected void generateProductId() {
	
	        }
	    }
	}


    public static void main(String[] args) {
        Builder builder = new Builder();
        Product product = builder.name("DJX无人机").model("DJX-x24").build();
        System.out.println(product.productId);
    }

关注
打赏
1654938663
查看更多评论
立即登录/注册

微信扫码登录

0.0378s