DAO如何只向外部暴露接口,并屏蔽具体实现类呢? 比如有个玩具类的DAO:ToyDAO,然后有几个具体的实现类比如玩具狗DogImpl和玩具鸭DuckImpl一般情况下是上层调用ToyDAO来操作具体的实现类,而不是直接找做具体实现类请问除了人为约束之外,怎么在程序中控制禁止程序员直接创建具体实现类? 比如禁止这种DogImpl dog = new DogImpl() 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 项目只用三层架构。可以解决这样的问题。用现在比较成熟的框架。如ssh.把所有的bean交给spring 不管理,就不会出现你说的那种情况了。 DogImpl 构造函数改为private 请问除了人为约束之外,怎么在程序中控制禁止程序员直接创建具体实现类?按理说你想别人别那样做,告诉人家不就行了。如果你实在要实现那你就把你那些类封装成dll,这样他们只能掉而不知道原始类是什么结构。 然后怎么实例化?是DogImpl自己再一个getInstance() 方法,里面自己new DogImpl()吗? 把DogImpl的构造函数改成private或是protect,建议改成protect,包内可以实例化该对象。 用webService可以实现你的需求。 把它改成protect,在包内创建一个DAOFactory类,有一个String类型的成员变量name,再写一个getInstance()方法,根据name的值来实例化对象,例如当name = dog时,返回一个DogImpl对象。外部的包通过DAOFactory来实例化对象。 用框架也可以自己new出来,框架只保证你使用了我给你的方法,框架才能管理该对象。如果你不想让实现类自己new出来,就得像上面大家说的那样,把构造器修改,这是从根源上杜绝了new出来的可能,否则无论你怎么封装,还是可以直接new,毕竟这是java语法允许的。 大家一起来帮忙 帮解释个名词 Java API 是规范还是实现? 问一个重写的问题还有一段代码的内存运作方式 如何在rcp 中实现多个工作台窗口 并且各个工作台窗口菜单栏和工具栏不同 用javac编译程序的时候出现不能识别SQLProxy代码的问题是怎么回事 昨天考公务员碰到一个超难数字关系推理题!!!!!!!!!!!!!!!!!!!!! 买错书后:语法查询高手请带路 有关使用jni调用c\c++的问题 高分求教,关于Drag and drop 很困扰,求解答 想问下为什么我的时间差结果为什么不对?
按理说你想别人别那样做,告诉人家不就行了。如果你实在要实现那你就把你那些类封装成dll,这样他们只能掉而不知道原始类是什么结构。
然后怎么实例化?是DogImpl自己再一个getInstance() 方法,里面自己new DogImpl()吗?