Java中有状态Bean和无状态Bean区别

什么是有状态对象?什么是无状态对象?

    有状态对象:有实例变量可以标志其对象所处的状态。(有实例变量的对象,有存储数据能力)
    无状态对象:无实例变量可以标志其对象所处的状态。(无实例变量的对象,无存储数据能力)

举例

有状态对象举例
/**
 * 无状态bean
 */
class NotHasStateBeanTest {

    public NotHasStateBeanTest() { }

    public String notHasStateBean(){
        return "无状态bean";
    }
}
无状态对象举例
/**
 * 有状态bean
 */
class HasStateBeanTest {
    // 实例变量,存储当前对象状态
    private String beanName;

    public HasStateBeanTest(String beanName){
        this.beanName = beanName;
    }

    public String hasStateBean(){
        return "有状态bean-" + beanName;
    }
}

测试

class Test {
    public static void main(String[] args) {
        NotHasStateBeanTest notHasStateBeanTest = new NotHasStateBeanTest();
        System.out.println("1:" + notHasStateBeanTest.notHasStateBean());

        HasStateBeanTest hasStateBeanTest1 = new HasStateBeanTest("小狗");
        HasStateBeanTest hasStateBeanTest2 = new HasStateBeanTest("小猫");
        System.out.println("2:" + hasStateBeanTest1.hasStateBean());
        System.out.println("3:" + hasStateBeanTest2.hasStateBean());
    }
}

结果

1:无状态bean
2:有状态bean-小狗
3:有状态bean-小猫

你可能感兴趣的:(Java)