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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lanzy1989 中级黑马   /  2014-9-19 21:06  /  999 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

设计模式
  解决现实中的问题出来的,设计思想--基石OOP
  要求:1000次的循环需要多长时间
  循环开始的时候,记录时间,结束后记录时间
  java.lang.System类,静态方法 long currentTimeMillis()作用,返回自1970年1月1日午夜零时,到程序运行的那个时间,所经过的毫秒值  1秒=1000毫秒
  刚才的问题,使用main方法写,刚才的程序封装成对象。封装成对象后,发现程序一部分确定,一部分不确定,将不确定的地方,写成一个方法,调用就可以了。将不确定的地方,不写,暴露出去,等待别人来实现,子类继承和覆盖
  提供一个方法模版,子类继承后,重写方法,实现自己的功能,模板方法设计模式






装饰设计模式
  增强原有对象的功能。
  地面,作用承重,加地板,干净,休息
  Person,吃的功能,看成地面,BufferPerson,增强原有人的吃饭功能,铺地板
  private Reader r;
  BufferedReader(new FileReader){
    this.r = new FileReader();
  }
  String readLine(){ r.read(); }
  public void close(){ r.close();}

.继承重写方法,装饰模式的区别,谁更有优势
   继承,面向对象三大特征之一,装饰模式,解决实际的问题,出现设计思想
   根本的区别继承体系的不同
  继承覆盖方法来解决
      Reader
        读取文本类 ReaderText
            |-- BufferReaderText 提升原有读取文本类的功能
        读取照片类 ReaderPicture
            |--BufferReadPicture 提升原有读取照片类的功能
        读取音乐类 ReaderMusic
            |--BufferReaderMusic 提升原有读取音乐类的功能
        读取游戏类 ReaderGame
            |--BufferReaderGame 提升原有读取游戏类的功能
  以上的解决方式,是继承和覆盖,由于单继承,导致了继承体系过于庞大和臃肿,因此,学习起来很困难,开发者使用起来也很麻烦

  采用装饰模式解决
      Reader
        读取文本类 ReaderText
        读取照片类 ReaderPicture
        读取音乐类 ReaderMusic
        读取游戏类 ReaderGame
  提升原有流对象功能,提升谁不清楚,但是我知道提示的一定是Reader的子类
       缓冲区对象 BufferedReader (Reader r) extends Reader
装饰的设计模式,继承体系,简单,明了,学习很简单,开发者用着也顺手




单例设计模式Single
  设计思想,保证对象的唯一性 class A{}  new A()  new A()
   建立对象,调用类的构造方法,类私有了构造方法
  实现步骤:
私有构造方法
成员位置创建自己的本类对象
提供公共方法,返回创建的对象
    多线程并发访问懒汉式的方法getInstance()获取对象,输出对象,哈希值不是唯一
    采用判断if两层,加上同步,保证了程序的安全性和执行效率,这个案例必须会写!
*****由于将构造方法私有化了,该类不能被继承*********

4 个回复

倒序浏览
楼主大神。。。不过小弟看不太明白。。。我回去再研究研究。。
回复 使用道具 举报
学习了……
回复 使用道具 举报

这还是我目前稍微研究明白的,还有很多啊
回复 使用道具 举报
表示完全看不懂
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马