`
chenzhaogogogo
  • 浏览: 21286 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

23种设计模式的代码版(Java) ---创建型

阅读更多
package   lq.test;  
   
  import   java.io.*;  
  import   java.util.*;  
   
  //*********创建型模式***************  
   
  //factory   method   1 
  //1具体的构造算法,和2构造出的具体产品由子类实现  
  interface   Product   {  
  }  
   
  //或者我也提供一个工厂的接口,由这个抽象类来继承它  
   
  abstract   class   Factory   {  
      abstract   public   Product   fmd();  
   
      //我认为这个方方法的存在是,是对FactoryMethod方法的补充  
      //例如可以为生成的对象赋值,计算为生成对象应付何值,前后的日值  
      //且这些都是公用的,生成产品的最主要算法还是在FactoryMethod中,  
      //这个方法只是起辅助作用,这也是一种思维方法,将具体的算法实现在一个方法中  
      //而我不直接调用此方法,而使用另外的一个方法封装它,等到了更灵活的效果,而  
      //子类需实现的内容是FactoryMethod  
      //此方法是一个TemplateMethod  
      public   Product   creat()   {  
          Product   pd   =   null;  
          System.out.println("before   operation");  
          pd   =   fmd();  
          System.out.println("end   operation");  
          return   pd;  
      }  
  }  
   
  class   Product1   implements   Product   {  
  }  
   
  class   Factory1   extends   Factory   {  
  public   Product   fmd()   {  
  Product   pd   =   new   Product1();  
  return   pd;  
  }  
  }  
   
  //FactroyMethod   2 
  //这种方式简单实用  
  interface   Producta   {  
  }  
   
  interface   Factorya   {  
  Producta   create();  
  }  
   
  class   Producta1   implements   Producta   {}  
   
  class   Factorya1   implements   Factorya   {  
      public   Producta   create()   {  
          Producta   pda   =   null;  
          pda   =   new   Producta1();  
          return   pda;  
      }    
  }  
   
  //AbstractFactory    
  //AbstractFactory与FactoryMethod的不同在于AbstractFactory创建多个产品  
  //感觉此模式没有什么大用  
   
  //当然可以还有更多的接口  
  interface   Apda   {}  
  interface   Apdb   {}   
  interface   Afactory   {  
      Apda   createA();  
      Apdb   createB();  
  }  
   
  class   Apda1   implements   Apda   {}  
  class   Apdb1   implements   Apdb   {}  
   
  //有几个接口就有几个对应的方法  
  class   Afactory1   implements   Afactory   {  
      public   Apda   createA()   {  
          Apda   apda   =   null;  
          apda   =   new   Apda1();  
          return   apda;  
      }  
   
      public   Apdb   createB()   {  
          Apdb   apdb   =   null;  
          apdb   =   new   Apdb1();  
          return   apdb;  
      }  
  }  
   
  //Builder    
  //一个产品的生成分为生成部件和组装部件,不同的产品每个部件生成的方式不同  
  //而组装的方式相同,部件的生成抽象成接口方法,而组装的方法使用一个TemplateMethod方法  
  interface   Cpda   {}  
  class   Cpda1   implements   Cpda   {}  

  interface   BuilderI   {  
      void   buildPart1();  
      void   buildPart2();  
 
      void   initPd();  
      Cpda   getPd();  
  }  
   
  abstract   class   BuilderA   implements   BuilderI   {  
      Cpda   cpda;  
   
      public   Cpda   getPd()   {  
      initPd();  
   
      //对对象的内容进行设置  
      buildPart1();  
      buildPart2();  
   
      return   cpda;  
      }  
  }  
   
  class   Builder   extends   BuilderA   {  
      public   void   buildPart1()   {  
      System.out.println(cpda);  
      }  
   
      public   void   buildPart2()   {  
      System.out.println(cpda);  
      }  
   
      public   void   initPd()   {  
          cpda   =   new   Cpda1();  
      }  
  }  
   
  //一个简单的生成产品的实现  
  //1  
  abstract   class   Fy   {  
      public   abstract   void   med1();    
   
      static   class   Fy1   extends   Fy   {  
          public   void   med1()   {  
          }  
      }  
   
      public   static   Fy   getInstance()   {  
          Fy   fy   =   new   Fy1();  
          return   fy;  
   
          // Fy   fy   =   new   Fy1()   {//这种匿名内部类是静态的!!  

  // public   void   med1()   {  
  // }  
  // };  
  // return   fy
}  

      }  
   
      //2  
      interface   Pdd   {}  
   
      class   Pdd1   implements   Pdd   {}  
   
      abstract   class   Fya   {  
          public   static   Pdd   getPd()   {  
          Pdd   pdd   =   new   Pdd1();  
          return   pdd;  
      }  
  }  
   
  //Prototype  
  //在java中就是clone,又包含深拷贝和浅拷贝  
  class   CloneObja   {  
      public   CloneObja   MyClone()   {  
              return   new   CloneObja();  
      }  
  }  
   
  class   CloneObjb   {  
      public   CloneObjb   MyClone()   throws   Throwable   {  
          CloneObjb   cobj   =   null;  
          cobj   =   (CloneObjb)   pcl(this);  
          return   cobj;  
      }  
   
      /深度拷贝算法  
      private   Object   pcl(Object   obj)   throws   Throwable   {  
      ByteArrayOutputStream   bao   =   new   ByteArrayOutputStream(1000);  
      ObjectOutputStream   objo   =   new   ObjectOutputStream(bao);  
      objo.writeObject(obj);  
   
      ByteArrayInputStream   bai   =   new   ByteArrayInputStream(bao.toByteArray());  
      ObjectInputStream   obji   =   new   ObjectInputStream(bai);  
   
      Object   objr   =   obji.readObject();  
      return   objr;  
      }    
  }  
   
  //Singleton    
  //一个类只有一个对象,例如一个线程池,一个cache  
  class   Singleton1   {  
      public   static   Singleton1   instance   =   new   Singleton1();  
   
     private   Singleton1()   {  
      }  
   
      public   static   Singleton1   getInstance()   {  
          return   instance;  
      }  
  }  
   
  class   Singleton2   {  
      public   static   Singleton2   instance;  
   
      private   Singleton2()   {  
      }  
   

  // public   static   Singleton2   getInstance()   {  
  // if   (instance   ==   null)   {  
  // instance   =   new   Singleton2();  
  // }  
  //  
  // return   instance;  
  // }  

   
      public   static   Singleton2   getInstance()   {  
          synchronized(Singleton2.class)   {  
              if   (instance   ==   null)   {  
              instance   =   new   Singleton2();  
              }  
          }  
   
           return   instance;  
      }  
  }
分享到:
评论

相关推荐

    java之23种设计模式完整代码

    在Java中,这23种设计模式分为三大类:创建型、结构型和行为型。 1. **创建型设计模式**: - **单例模式**:确保一个类只有一个实例,并提供全局访问点。 - **工厂方法模式**:定义一个用于创建对象的接口,让...

    java23种设计模式及其代码

    这篇资料"java23种设计模式及其代码"涵盖了这些模式的详细解释和实际代码实现,对于学习和理解设计模式具有极大的帮助。 1. 创建型模式(5种): - 单例模式:保证一个类只有一个实例,并提供一个全局访问点。 - ...

    23种设计模式的java实现-Builder

    在Java中,23种设计模式被广泛接受并分为三大类:创建型、结构型和行为型。Builder设计模式是创建型模式之一,主要解决复杂对象的构建问题,使得构建过程与表示分离。 Builder模式的核心思想是将一个复杂对象的构建...

    2020版23种Java设计模式-图解-附代码.pdf

    本教程详细介绍了23种经典的Java设计模式,包括创建型、结构型和行为型模式。下面将对这三大类模式进行深入解析。 1. **创建型模式**: - **工厂方法模式**:定义一个用于创建对象的接口,让子类决定实例化哪一个...

    java23种设计模式详解+源码(绝对详解)

    在Java编程中,有23种经典的GoF(Gang of Four)设计模式,它们被分为三大类:创建型、结构型和行为型。本资源集合了这些模式的详细解释与源码分析,旨在帮助开发者深入理解和应用设计模式。 1. 创建型模式...

    Java之23种设计模式解析

    这份资料详细介绍了在Java编程中常用的23种设计模式,旨在提升开发者对于软件设计的理解和应用能力,从而写出更加高效、可维护和可扩展的代码。 首先,我们来看一下23种设计模式的分类:它们可以分为三大类,即创建...

    Java设计模式----通俗易懂版

    这23种设计模式可以分为三类:创建型、结构型和行为型。 1. 创建型设计模式: - 单例模式:保证一个类只有一个实例,并提供全局访问点。 - 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类...

    《Java设计模式》课后答案-刘伟.rar

    本书涵盖了23种经典的GOF(GoF,Gang of Four)设计模式,包括创建型、结构型和行为型三大类。创建型设计模式如单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和...

    极客学院java-23种设计模式

    在Java领域,23种设计模式被广泛接受,它们分为三大类:创建型、结构型和行为型。下面,我们将详细探讨这些设计模式以及它们在实际开发中的应用。 1. 创建型设计模式: - 单例模式(Singleton):确保一个类只有一...

    23种设计模式的java实现源代码.RAR

    本压缩包包含的是23种经典设计模式的Java实现源代码,下面我们将详细探讨其中的两种主要模式:单例模式和工厂模式。 1. 单例模式(Singleton Pattern): 单例模式是一种确保一个类只有一个实例,并提供全局访问点...

    java设计模式---诙谐易懂版

    设计模式一般分为三大类:创建型模式、结构型模式和行为型模式。 3. 根据文件内容,诸葛亮给赵云的三个锦囊妙计可以用策略模式来实现。每个妙计对应一个实现了策略接口的具体策略类。例如,BackDoor类实现了...

    Java开发中的23种设计模式代码整理

    这个压缩包文件包含了23种经典的Java设计模式,这些模式通常被分为三大类:创建型、结构型和行为型。 1. 创建型设计模式: - 单例模式:确保一个类只有一个实例,并提供全局访问点。 - 工厂方法模式:定义一个...

    Java-设计模式.zip

    这个“Java-设计模式.zip”压缩包很可能是包含一系列关于Java设计模式的教程或者代码示例。其中,“2.Java面对-10-设计模式”可能是一个文档或章节,专门讨论面向对象的设计模式。 设计模式分为三类:创建型、结构...

    java23种设计模式详细讲解

    《java23种设计模式详细讲解》这本书系统地介绍了23种设计模式,并通过具体的例子来阐释每种模式的应用场景和实现方式,旨在帮助程序员提升设计能力,编写更优雅、可维护的代码。书中的内容涵盖了创建型模式、结构型...

    JAVA设计模式 代码-图解

    《JAVA设计模式 代码-图解》是一份清晰易懂的PDF资料,通过图文结合的方式详细介绍了23种常见的设计模式,旨在帮助开发者更好地理解和应用这些设计模式。 #### 1.1 创建型模式 创建型模式关注的是对象的创建方式,...

    Java23种设计模式可直接运行Demo

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    Java23种设计模式.pdf

    在Java开发中,设计模式可以分为三类:创建型模式、结构型模式和行为型模式。创建型模式主要关注如何创建对象,结构型模式着重于对象和类的组合,行为型模式则专注于对象间的通信。 创建型模式包括如下几种: - ...

    Java设计模式代码

    本资源“Java设计模式代码”提供了一系列具体的Java实现,帮助开发者深入理解并应用这些模式。下面将详细阐述Java设计模式中的主要类别及其重要知识点。 1. 创建型模式: - 单例模式:确保一个类只有一个实例,并...

Global site tag (gtag.js) - Google Analytics