关闭

java中的设计模式

92人阅读 评论(0) 收藏 举报

----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------

  

  设计模式是软件工作者辛劳的结晶,她是一种简单的,可重复使用的工程化方法,对软件工程的影响不可小觑,接下来就来总结一下到目前为止,我在java中学到的几种设计模式。
    第一种:单例设计模式,如果一个类只能实现一个实例,则必须将构造函数私有化,并在自己内部先行创建一个私有实例,然后定义一个公有的方法让整个系统提供这个唯一的实例,在多个用户都访问该类时,他们共享同一个对象,且单例对象持有对自己的引用,操作系统的资源管理器就是单例的实现。
    单例的设计有两种方式:饿汉式和懒汉式,
class Single{饿汉式
     private Single(){}
     private final static s = new Single();
     public Single getInstance(){
          return s;
     }
}

class Single1() 懒汉式
{
    private static Single s=null;
 private Single(){};
 public static Single getInstanse()
 {  
  if(s==null)
     s=new Single();
  return s;
 }
}
    第二种:享元模式,通过数据的重复使用减少内存开销,从字面意思理解就是共享一个元素的意思,当一个简单的元素在程序中频繁使用,而每次使用都重新开辟内存空间,将严重浪费系统资源,所以java工程师们就想到将这些使用次数高的元素定义成享元模式,该元素首次被调用时开辟空间,若再次被调用就记录该元素的地址,即让多个变量指向同一个对象,实现共享的目的,在java中这样的例子有很多,例如String的特性:String s1="java";String s2="java";实际上s1与s2是相等的;再如1.5版本的自动封箱特性,Integer i1=7;Integer i2=7;此时i1与i2在内存中也是指向同一个对象,但前提是该值必须在-128-127之间。
    第三种:装饰模式,装饰模式是在不改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰对象与真是对象具有相同的接口,比继承更灵活,避免了体系的臃肿,降低了类与类的关系,同时可以为真是对象增加附加的功能,提高效率。简单来说就是不同对象的组合使用,更完美的实现目标,该方法在IO技术中运用平凡,在读取数据时装饰数据缓冲区,再大数据量是可减少时间,例如:BufferedReader br=new BufferedReader(new FileReader("1.txt"));装饰模式顾名思义就是再穿一件好看的衣服,或增加一些小技巧,通过装饰模式扩展功能比集成更灵活。
     第四种:如果需要做一件事,先做什么,如何做都是预先知道的,而且顺序是固定的,则可以使用模版方法,很容易理解,写个小程序一看就明白:
abstract class GetTime //此类只有一个固定功能:计算函数运行时间且函数是不确定的;
{
 public final void getTime()
 {
         long start=System.currentTimeMillis();
  runcode();//可以在模版中加入所要操作的方法
  long end=System.currentTimeMillis();
  System.out.println(end-start);
 }
 public abstract void runcode();
 }
class SubTime extends GetTime
{
 public void runcode()
 {
  for(int x=0;x<1000;x++)
  {
         System.out.print('*'); 
     }
 }
}
class TemplateDemo
{
 public static void main(String[] args)
 {
  GetTime gt=new SubTime();
  gt.getTime();
 }
}
      经过在网上查找,java中总共有23中设计模式,在这里统计一下,今后慢慢学习;
设计模式根据使用类型可以分为三中:

创建型模式

1.抽象工厂模式 AbstractFactory 2.建造者模式 Builder 3.工厂方法模式 Factory Method 4.原型模式 Prototype 5.单例模式 Singleton

结构型模式

1.适配器模式 Adapter 2.桥接模式 Bridge 3.组合模式 Composite 4.装饰模式 Decorator 5.外观模式 Facade 6.享元模式 Flyweight 7.代理模式 Proxy

行为模式

1.职责链模式 Chain of Responsibility 2.命令模式 Command 3.解释器模式 Interpreter 4.迭代器模式 Iterator 5.中介者模式 Mediator 6.备忘录模式 Memento 7.观察者模式 Observer 8.状态模式 State 9.策略模式 Strategy 10.模板方法模式 Template Method 11.访问者模式 Visitor
     其实设计模式在很多行业都有应用,也可以应用与多种语言,在面向对象思想里的应用已相当广泛,为开发人员提供了一种高效的设计途径。

 

----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3265次
    • 积分:123
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档