设计模式-构建者模式

设计模式-构建者模式

面试题总结

今天面试面试的大概问题

linux系统下常用的命令

java中常用的类

arraylist和linklist的区别产生区别的原因

sq语言的五大分类

where和having的区别

mysqlE的事务隔离级别

orcle和mysql的分野有什么区别
<select id="findByNameCount" resultType="int">
		select count(1) from demo
		<where>
			<if test="name!=null   and name!='' and  name!='all'">
				name like '%'||#{name}||'%'
			</if>
		</where>
	</select>

<select id="findByNameByPageObject"
		resultType="com.fcmap.ssm.domain.Demo">
		select * from(
		SELECT A.*, ROWNUM RN
		FROM (
		SELECT * FROM DEMO
		<where>
		<if test="name!=null and name!='' and name!='all'">
				and name like '%'||#{name}||'%'
			</if>
		</where>
		) A
		WHERE
		ROWNUM <![CDATA[ <= ]]>
		(#{pageIndex}*#{pageSize})
		)
		<where>
			RN <![CDATA[ >= ]]>
			((#{pageIndex}-1)*#{pageSize})+1
		</where>
	</select>


rest是什么

maven的基本命令有哪些

svn的基本命令有哪些

tomcat的基本命令有哪些

swagger的作用

二叉树和B树B+数结构上的区别

需求

参考 lombok 的链式编程 和 构建者 给对象属性赋值

普通的 set/get 方法赋值

User 类 , 给实例的属性赋值

普通 set/get 方法

public class User {
    private Integer id;
    private String userName;
    private String passWord;
//    .... 还有其它很多属性

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", passWord='" + passWord + '\'' +
                '}';
    }
}

        // 如果 该类属性很多 , 那么会重复写很多代码 , 层次感不是很强
        User user = new User();
        user.setId(1);
        user.setUserName("zhangsan");
        user.setPassWord("111111");

链式赋值

参考了 lombok 的 @Accessors(chain = true) 注解

set 方法返回值为当前对象 this



public class User {
    private Integer id;
    private String userName;
    private String passWord;
//    .... 还有其它很多属性

    public Integer getId() {
        return id;
    }

    public User setId(Integer id) {
        this.id = id;
        return this;
    }

    public String getUserName() {
        return userName;
    }

    public User setUserName(String userName) {
        this.userName = userName;
        return this;
    }

    public String getPassWord() {
        return passWord;
    }

    public User setPassWord(String passWord) {
        this.passWord = passWord;
        return this;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", passWord='" + passWord + '\'' +
                '}';
    }
}

// 使用 链式编程
        User user = new User().setId(1).setUserName("zhangsan").setPassWord("111111");

构建者模式

参考了 lombok @Build 注解

通过静态内部类的方式进行属性赋值



public class User {
    private Integer id;
    private String userName;
    private String passWord;
//    .... 还有其它很多属性


    public User(Integer id, String userName, String passWord) {
        this.id = id;
        this.userName = userName;
        this.passWord = passWord;
    }

    public static User.UserBuilder builder() {
        return new User.UserBuilder();
    }
    
   public static class UserBuilder{
       private Integer id;
       private String userName;
       private String passWord;
       
       public User.UserBuilder id(final  Integer id){
           this.id = id;
           return this;
       }

       public User.UserBuilder userName(final  String userName){
           this.userName = userName;
           return this;
       }

       public User.UserBuilder passWord(final  String passWord){
           this.passWord = passWord;
           return this;
       }
       public User build() {
           return new User(this.id, this.userName, this.passWord);
       }
       
   }
}

        // 使用构建者模式 (参考了 lombok 的 @builder 注解)
        // 使用了 静态内部类的方式
        User user = User.builder().id(1).userName("zhansan").passWord("111111").build();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值