查看: 637|回复: 1

寒露老师您的U2-Web编程视频好像有一个错误,个人理解,

[复制链接]

该用户从未签到

发表于 2016-4-7 11:08:46 | 显示全部楼层 |阅读模式
本帖最后由 liushousong 于 2016-4-7 11:16 编辑

请看图片附件,是关于对象初始化的问题
1.png
2.png
3.png
4.png
  • TA的每日心情
    郁闷
    2015-11-17 13:29
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    发表于 2016-4-7 13:27:40 | 显示全部楼层
    首先,肯定你看视频蛮认真的哈,发现问题 挺好
    我简单的说明一下啊...


    第一幅图:
    service的实现类里的声明的 newsDao, 对于newsDao进行new的时候是初始化对象。 newsDao前面没有private,默认的权限-default(默认对于同一个包中的其他类相当于公开,对于不是同一个包中的其他类相当于私有),如果外界需要访问必须要getter和setter,getter和setter是给外界的访问接口,这也是标准的javabean的写法。当然正常情况下 应该都是private的,如果将来集成spring的话,是需要对newsDao进行getter和setter注入的,那么就必须增加get和set方法,当然若没有集成spring的话,service内的dao属性必须是private的,当然也就没有必要有get和set了。

    第二幅图:
    test类里 的确没有必要去new和set了。16 17 20 21 这四行没有必要,你认为的是对的,当然,这点我在后续也进行了改进,比如第四幅图

    第四幅图:====================
    当然第四幅图的写法 才是目前最合适的写法:
    public class NewsServiceImpl implements NewsService {
        private NewsDao newsDao = null;
            private NewsCommentDao newsCommentDao = null;

            public NewsServiceImpl(){
                    newsDao = new NewsDaoImpl();
                    newsCommentDao = new NewsCommentDaoImpl();
            }
            。。。
    }

    public class TestNewsService {
           
            public static void main(String[] args) {
                   
                    NewsService newsService = new NewsServiceImpl();
                    News news = new News();
                    news.setId(2);
                    newsService.delete(news);
            }
    }       

    多补充下,如果集成spring的话,在spring中需要注入dao,要么需要getter和setter,要么就是如上这种可以支持spring的构造器方式注入
    您需要登录后才可以回帖 登录 | 注册青鸟豆号

    本版积分规则

    Copyright 1999-2019 Beijing Aptech Beida Jade Bird Information Technology Co.,Ltd

    北大青鸟IT教育 北京阿博泰克北大青鸟信息技术有限公司 版权所有

    京ICP备11045574号-3 京公网安备11010802013845号

    快速回复 返回顶部 返回列表