在线JAVA实体类生成工具 java类生成器

您所在的位置:网站首页 实体类生成器 在线JAVA实体类生成工具 java类生成器

在线JAVA实体类生成工具 java类生成器

2024-07-13 01:52| 来源: 网络整理| 查看: 265

1、定义

生成器模式(英:Builder Pattern)又名建造模式的一种设计模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。

2、适用场景

相同的方法,不同的执行顺序,产生不同的事件结果。 对各部件或零件,都可以配到一个对象中,但是产生的运行结果又不相同时。 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的结果,这个时候使用创建者模式非常合适。 当初始化一个对象特别复杂,如参数多,且很多参数都有默认值时(一个类有多个构造函数的时候,可以考虑使用建造者模式) 需要生成的产品对象有复杂的内部结构,这些产品对象具备共性; 隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。 需要生成的对象内部属性本身相互依赖。

3、优缺点

优点 封装性好,创建和使用分离 扩展性好、建造类之间独立、一定程度上解耦 缺点 产生多余的Builder对象 产品内部发生变化,建造者都要修改,成本较大,所以需要精心设计

4、主要角色:Product(产品角色):一个具体的产品对象 Builder(抽象建造者):创建一个Product对象的各个部件指定的接口/抽象类 ConcreteBuilder(具体建造者):实现接口,构建和装配各个部件 Director(指挥者):构建一个使用Builder的对象,它主要是用于创建一个复杂的对象,它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程5、 实例1 product 产品角色(一个普通的对象)/** * @author weisn * 用户信息(product 产品角色) */ public class UserInfo { private String id; private String name; private String age; private String phone; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } }2 builder构造器

创建一个Product对象的各个部件指定的接口/抽象类

/** * @Description: 构造器 * @ClassName: UserInfoBuilder * @Author: weisn * @Date: 2023/3/6 10:32 * @Version: 1.0 */ public abstract class UserInfoBuilder { private UserInfo userInfo = new UserInfo(); protected UserInfo getUserInfo() { return userInfo; } public abstract UserInfoBuilder buildId(String id); public abstract UserInfoBuilder buildName(String name); public abstract UserInfoBuilder buildAge(String age); public abstract UserInfoBuilder buildPhone(String phone); public UserInfo build() { return userInfo; } }3 ConcreteBuilder(具体建造者)

实现接口,构建和装配各个部件这里就可以提现不同的

/** * @Description: 建造者 * @ClassName: UserConcreteBuilder * @Author: weisn * @Date: 2023/3/6 10:42 * @Version: 1.0 */ public class UserConcreteBuilder extends UserInfoBuilder{ private UserInfo userInfo = new UserInfo(); public void builderId(String id) { userInfo.setId(id); } public void builderName(String name) { userInfo.setName(name); } public void builderAge(String age) { userInfo.setAge(age); } public void builderPhone(String phone) { userInfo.setPhone(phone); } public UserInfo builber() { return userInfo; } }4 ConcreteBuilder(具体建造者)

实现接口,构建和装配各个部件

/** * @Description: 建造者 * @ClassName: UserConcreteBuilder * @Author: weisn * @Date: 2023/3/6 10:42 * @Version: 1.0 */ public class UserConcreteBuilder extends UserInfoBuilder{ public UserInfoBuilder buildId(String id) { this.getUserInfo().setId(id); return this; } public UserInfoBuilder buildName(String name) { this.getUserInfo().setName(name); return this; } public UserInfoBuilder buildAge(String age) { this.getUserInfo().setAge(age); return this; } public UserInfoBuilder buildPhone(String phone) { this.getUserInfo().setPhone(phone); return this; } }5 Director(指挥者)

构建一个使用Builder的对象,它主要是用于创建一个复杂的对象,它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程

/** * @Description: 指导建造者建造(指挥者) * @ClassName: UserInfoDirector * @Author: weisn * @Date: 2023/3/6 11:29 * @Version: 1.0 */ public class UserInfoDirector { private UserInfoBuilder userInfoBuilder; public UserInfoDirector(UserInfoBuilder userInfoBuilder) { this.userInfoBuilder = userInfoBuilder; } public UserInfo BuilderUserInfo(String id,String name,String age,String phone) { return userInfoBuilder .buildId(id) .buildName(name) .buildAge(age) .buildPhone(phone) .build(); } }6 测试/** * @Description: * @ClassName: Test * @Author: weisn * @Date: 2023/3/6 15:59 * @Version: 1.0 */ public class Test { public static void main(String[] args) { // 建造者 UserInfoBuilder builder = new UserConcreteBuilder(); // 指导建造者建造(指挥者) UserInfoDirector director = new UserInfoDirector(builder); UserInfo userInfo = director.BuilderUserInfo("1", "张三", "12", "152222"); System.out.println(userInfo.toString()); } }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3