`

学习设计模式的总结

    博客分类:
  • java
阅读更多

零零散散看Java设计模式也有一个月的时间啦,主要的书籍是<>,阎宏老师的<>(待续)以及许多blog(http://blog.csdn.net/qutr/category/125050.aspx & http://blog.csdn.net/qutr/category/125050.aspx?PageNumber=2 )。学了这么久还是作一下总结(年终总结,呵呵)
 1.singleton:保证在一个应用程序中只有一个实例,由自己进行管理
  //第一种形式
  public class Singleton {
   public Singleton(){}
   private static Singleton instance = new Singleton();
   public static Singleton getInstance() {
       return instance;   
      }
  }

  //第二种形式
  public class Singleton {
     private static Singleton instance = null;
           public static synchronized Singleton getInstance() {
                      if (instance==null)
                 instance=new Singleton();
           return instance;  
       } 

  }  
  第一种形式只适合单线程,而第二种形式适合多线程并采用了lazy initialization,在这就不得不提Double-Checked

Locking(DCL)模式,下面是DCL的示例演示:
  public class USTax extends Tax {
   private static class Instance {
    static final Tax instance = new USTax();
   }
   public static Tax getInstance() {
    return Instance.instance;
   }
  }

  这个解决方案是因为内部类(Instance)将只被装载一次,所以只会创建一个USTax对象.
 2.facade:提取公共的方法为外部提供统一的接口.实例就是数据库连接,我们只要传入driver和connURL即可连接各种 不同的数据库.
 3.proxy:对于开销很大的对象,只是在使用时才创建的一种解决方案,实际上起到一个防火墙的作用,创建抽象方法的实例时实际上就是一个proxy的展示.
 4.Adapter:把两个毫无相关的对象整合在一起.实际上是一种组合方式
 5.Decorator:动态添加功能,采用接口作为参数,实现顺序重排,I/O是一个很好的例子
 6:strategy:实际上就是抽象方法的灵活运用,在运行是自由切换,都是以抽象作为参数
 7.builder:把复杂对象的构建与实现分离,使得同样的构建可以创建不同的表示,一般的都是声明一个通用类(abstract class & interface),一个具体实现类,一个生产类,并将通用类作为参数。
 8.Prototype:就是clone
 9.Composite:树型结构就是一个很好的写照
 10.flyweight:在一个系统中如果有多个相同的对象,那么只共享一个文件即可,不必要去创建多个实例,浪费资源,实现形式:创建一个抽象类,一个具体类,一个工厂类(利用Hashtable创建一个唯一对象,这里唯一对象指的是相同对象的共同实例,而不能和singleton同言而喻)创建抽象对象。
 11.command:调用者基本只和接口打交道,不合具体实现交互,这也体现了一个原则,面向接口编程,创建一个抽象类,创建多个实现类,并把实现类封装到黑盒(List)中去,在后面只要从黑盒中去并把它转成接口类型即可访问其中的方法。

       这只是作为一个学习笔记吧!方便以后翻阅,通过这段时间的学习,我对面向对象的理解自我感觉是上了一个层次,大约知道某个模式有什么样的功能,适用于的场景。以后在实际的工作和联系中尽量加入这些元素,碰到能用某个模式的时候要好好去理解和运用了.

分享到:
评论

相关推荐

    设计模式学习总结.doc

    这篇文档主要讨论了设计模式的概念、作用、应用以及学习设计模式时应注意的误区。 设计模式起源于面向对象编程领域,它是一种可复用的软件设计解决方案,旨在提升代码的灵活性、可维护性和可扩展性。正如标题和描述...

    李建忠 C#面向对象设计模式纵横谈(25):设计模式总结

    总结来说,李建忠先生的“设计模式总结”涵盖了C#中广泛使用的设计模式,强调了它们在实际项目中的应用价值。理解并熟练运用这些模式,对于提升C#开发者的专业素养和项目质量具有重大意义。无论是初学者还是经验丰富...

    C++设计模式各种模式总结

    C++设计模式各种模式总结

    设计模式总结.pdf

    本总结文档涵盖了所有的设计模式,并对常用的模式进行了详细解释,非常适合程序员在面试前快速复习以及日常学习使用。 文档中提到的六大设计原则,包括单一职责原则、里氏替换原则、接口隔离原则、迪米特法则、开闭...

    设计模式学习笔记总结

    这里我们聚焦于C#语言中的设计模式学习笔记,涵盖了多种经典的设计模式,如合成模式、桥梁模式、装饰模式、享元模式、门面模式、命令模式、工厂方法、策略模式、代理模式以及状态模式。下面将对这些模式逐一进行详细...

    设计模式学习笔记及其模式特点总结

    这些文档涵盖了设计模式的基础知识,通过阅读和学习,你可以深入了解每种模式的原理、应用场景及其实现方式,从而提升你的软件设计能力。绘图1.vsd可能是用于描绘设计模式的UML类图或其他图表,它能直观地展示各对象...

    MVC设计模式学习总结.pdf

    MVC设计模式学习总结.pdf

    23种软件设计模式总结

    设计模式是软件开发中的一种最佳实践,它是在特定上下文中解决常见问题的模板或蓝图,可以被反复使用,以提高代码...通过学习和应用这些设计模式,可以提高软件的质量,降低维护成本,同时也有助于团队间的沟通和协作。

    《Java设计模式》课程设计报告.docx

    《Java设计模式》课程设计...参考文献提供了进一步学习设计模式的资料,而附录中的完整程序代码可供学习者参考和研究。通过这个课程设计,学习者不仅可以掌握Java编程,还能深入理解设计模式的应用,提升软件设计能力。

    设计模式总结与分析

    Sunny在CSDN技术博客中陆续发表了100多篇与设计模式学习相关的文章,涵盖了七个面向对象设计原则和24个设计模式(23个GoF设计模式 + 简单工厂模式),为了方便大家学习,现将所有文章的进行了整理,方便大家下载阅读...

    23种设计模式总结及案例.pdf

    在《23种设计模式总结及案例》中,通常会涵盖以下主要的设计模式类型: 1. 创建型模式:这类模式主要关注对象的创建过程,使得系统在不指定具体类的情况下创建对象,提高代码的灵活性。包括单例模式(Singleton)、...

    设计模式之美—学习笔记

    学习设计模式并不意味着要在所有地方都硬套模式,而是要理解其背后的意图,灵活地在适当的地方应用,以解决实际问题。 设计模式之美在于它们是软件设计的通用语言,无论你使用哪种编程语言,都能通过这些模式与他人...

    设计模式学习 ppt

    设计模式是软件工程中的一种最佳实践,用于解决在...总结来说,"设计模式学习ppt"是一个全面介绍设计模式的教育材料,它将帮助学生和开发者掌握设计模式的核心理念,提升软件设计能力,促进代码质量和项目效率的提升。

    设计模式学习总结.pdf

    在《设计模式学习总结》中,作者分享了在实际工作中应用设计模式的心得,强调理解设计模式的核心思想而非机械地套用模式。 文中提到的23种设计模式中,作者详细介绍了19种,包括但不限于单例模式、工厂模式、观察者...

    Head First 设计模式 +Java设计模式(第2版)

    设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的方法来处理特定场景下的问题,使得代码更易于理解、维护和扩展。这两本书对于Java开发者来说尤其宝贵,因为它们不仅介绍了设计模式的概念,还提供...

    Java设计模式总结

    这里主要针对标题“Java设计模式总结”以及描述中提及的资源进行深入阐述。 1. **设计模式的概念**: 设计模式并非具体的代码或库,而是一种在特定上下文中解决常见问题的模板。它们描述了如何在面向对象设计中以...

    设计模式学习知识点总结

    ### 设计模式学习知识点总结 #### 一、总则 设计模式的学习主要围绕面向对象的分析、设计与编程思想展开,旨在通过封装、继承、多态等机制来降低程序间的耦合度,使得程序结构更加灵活,易于维护与扩展。在实际...

    C++设计模式课件26_设计模式总结.pdf

    通过对C++设计模式的学习和实践,开发者不仅可以提高代码质量和可维护性,还能增强解决问题的能力。理解并熟练掌握这些模式对于成为一名优秀的软件工程师至关重要。此外,随着技术的发展,新的设计模式也会不断出现...

    【设计模式】常见设计模式学习总结c#版本.zip

    【设计模式】常见设计模式学习总结c#版本

Global site tag (gtag.js) - Google Analytics