forumFactory.getProfileManager();
profileManager.createUser(username,password,email);
返回的是类,不是接口。
另外接口为什么不能赋值?

解决方案 »

  1.   

    nielinjie(分低因为我一般不来),你好,
    1:forumFactory.getProfileManager();
    2:profileManager.createUser(username,password,email);
    3:返回的是类,不是接口。
    4:另外接口为什么不能赋值?
    上面是你所说的地点,第一点返回的是ProfileManager接口,第二点返回的是User接口,第三点肯定就不成立了,第四点接口是能赋值,但我不理解在jive中给User.setName(),User.setEmail等有什么作用,请问是不是User.setName()完了以后再User.getName()取得吗?但我发现是取不了的,面向接口编程??请指点,谢谢!
      

  2.   

    开发大型系统有个要求那就是:面向接口编程.接口是的方法是可以传值的,系统初始化的时候,就用FACTORY和抽象FACTORY模式,实例化了DbUser.所以,你在调用User.serName方法的时候,实际上是通过动态绑定调了DbUser.setName方法.
        你可以参考一些设计模式的文章,这里好像有过一篇专么介绍JIVE设计模式的:
    http://www-900.ibm.com/developerWorks/cn/index.shtml
      

  3.   

    那DbUser.setName("测试")了以后,DbUser怎么样才能得到这个值呢?谢谢!!
      

  4.   

    同上,那User.setName(  "测试  ")了以后,DbUser怎么样才能得到这个值呢?谢谢!! 我的意思是说,在User里setName()与DbUser有什么直接关系吗?怎么样动态绑定调用了DbUser.setName方法呢?
      

  5.   

    如何动态梆定,就是用接口啊.
    User是个interface, Dbuser是继承User的
    你可能对接口不是很熟悉,Jive是用了很多GOF的设计模式,
    你理解了设计模式就了解Jive的体系.
    关于设计模式和Jive见我的主页
    http://www.jdon.com
      

  6.   

    banq(www.jdon.com),你好!很感谢你的回答,正如你说的,我虽然java很长时间了,但是对接口还真的很不熟悉,能否真对上例做个小例子或详细说明一下呢?比如说User.setName("测试"),然后我想知道有没有设置好值了,System.out.println(?????),我就卡在这里出不去了,怎么才能得到它设置的那个值呢?真是百思不得其解,这是一件很痛苦的事情,希望你能帮我解答一下!谢谢了!
      

  7.   

    如果实现了newUser接口的类提供了回调Name的方法比如getName() :)
    你就能得到你set进去的值了。像楼上说得,去看看patters的书吧。
      

  8.   

    我用jive很长时间了。现在开发的论坛内核也用的是jive。
    从2.5版开始,jive开始接近一流forum水平,它的整个系统框架和
    许多代码设计都是非常有研究价值的。
    上面已经说了很多,在我看来,jive在操作数据库过程中,它创建的
    对象虽然都是接口类,但是,在实例化的时候,使用的是实现类。也
    就是DB*.class,比如上面的User.class,在定义对象后,接口类和
    实现类同时进行实例化。然而,所有的操作数据库,都是在DB*.class
    这些类的saveToDb(),loadFromDb()等方法中实现。呵呵,这么大个东东,要说清楚真是累。欢迎和我交流:
    [email protected]以上只是我的一点使用心得,请指正。
      

  9.   


    public class B
    {
    public static void main(String[] args) 
    {
    a obja=A1.geta();
    obja.p("interface test");
    }
    }
    ////////////
    public interface a
    {
    public void p(String str);
    }////////////////
    public class A1 implements a
    {
    private static A1 objA1;
    public void p(String str)
    {
    System.out.println(str);
    }
    public static a geta()
    {
    objA1=new A1();
    return objA1;
    }
    }
    存为三个文件,然后编译!java B运行!
      

  10.   

    yakuu(享受孤独),你好,
    <-上面已经说了很多,在我看来,jive在操作数据库过程中,它创建的
    对象虽然都是接口类,但是,在实例化的时候,使用的是实现类。也
    就是DB*.class,比如上面的User.class,在定义对象后,接口类和
    实现类同时进行实例化。然而,所有的操作数据库,都是在DB*.class
    这些类的saveToDb(),loadFromDb()等方法中实现。
    ->
    上面所说的接口类和实现类同时进行实例化在哪里体现呢?我看jive源代码的时候好想没有啊!就是直接从factory里得到一个接口,然后对接口进行设置,而具体类(DB*.class)根本就没有初始化啊!请指点!