A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© d342784178 中级黑马   /  2015-2-26 09:18  /  1196 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这里有一个BaseManager父类和几个子类
我想吧子类的写成单例 的
但是每个子类都要写一个getInstance方法
于是想抽取出来放到父类中
但是getInstance是static的
如何放到父类 求大神帮助!

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1

查看全部评分

9 个回复

正序浏览
艺多不压身丶 发表于 2015-2-27 11:49
装饰模式哪来的抽象方法?,装饰模式是那父类的对象做引用。别搞笑了好不的 ...

好吧,我不懂装饰。
回复 使用道具 举报
sofeel 发表于 2015-2-27 10:47
可能是我想 多了! 呵呵

装饰模式哪来的抽象方法?,装饰模式是那父类的对象做引用。别搞笑了好不的
回复 使用道具 举报
sofeel 中级黑马 2015-2-27 10:47:13
8#
sofeel 发表于 2015-2-27 10:43
装饰可以的。但是需要在子类中复写抽象的方法。
而版主的意思是:直接拿着父类的方法用(我是这样解读他的 ...

可能是我想 多了! 呵呵
回复 使用道具 举报
sofeel 中级黑马 2015-2-27 10:43:18
7#
本帖最后由 sofeel 于 2015-2-27 10:44 编辑
艺多不压身丶 发表于 2015-2-27 10:27
装饰模式,记得吗?用装饰模式可以实现

装饰可以的。但是需要在子类中复写抽象的方法。
而版主的意思是:直接拿着父类的方法用(我是这样解读他的意思的)。这就要涉及到参数传值的问题,静态方法直接限制了参数传值。
回复 使用道具 举报
装饰模式,记得吗?用装饰模式可以实现
回复 使用道具 举报
d342784178 发表于 2015-2-27 08:43
你这没有意义嘛 父类的getInstance没有作用啊
而且我的目的就是省掉在子类中写getInstance方法 ...

一涉及静态传值,程序就容易写死。
         *
         * 单例模式中的公用方法,若强行向上抽取,也只能是父类自娱自乐,子类没法将自己的本类对象传递进去。因为:静态限制的泛型传值和多态传值。
回复 使用道具 举报

你这没有意义嘛 父类的getInstance没有作用啊
而且我的目的就是省掉在子类中写getInstance方法
回复 使用道具 举报
本帖最后由 sofeel 于 2015-2-26 15:45 编辑
  1. public class Testt {

  2.         public static void main(String[] args) {

  3.                 /*
  4.                  * 用Object实现。(泛型做不了)
  5.                  * */
  6.         }

  7. }

  8. class BaseManager{
  9.        
  10.         public BaseManager(){}
  11.         public  static Object getInstance(){

  12.                 return new Object();
  13.         }
  14. }
  15. //饿汉
  16. class Zi1 extends BaseManager{
  17.        
  18.         private static Zi1 zi1=new Zi1();
  19.         private Zi1() {        }
  20.        
  21.         public static Zi1 getInstance(){

  22.                 return zi1;
  23.         }       
  24. }

  25. //懒汉
  26. class Zi2 extends BaseManager{
  27.        
  28.         private static Zi2 zi2;
  29.         private Zi2() {        }
  30.        
  31.         public static Zi2 getInstance(){
  32.                 if(zi2==null)//没考虑同步
  33.                         zi2=new Zi2();
  34.                 return zi2;
  35.         }       
  36. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

回复 使用道具 举报
本帖最后由 sofeel 于 2015-2-26 09:57 编辑
  1. 没考虑对
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马