`
chenzhaogogogo
  • 浏览: 20225 次
  • 性别: 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;  
      }  
  }
分享到:
评论

相关推荐

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

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

    后端-设计模式-java-精讲

    这是一篇关于设计模式的PDF,其内容涵盖了面向对象编程,设计原则,以及创建型模式、结构型模式、和行为型模式等。该文件共有3页,包含了设计模式的分类和具体的模式实现。 什么是设计模式? 有哪些类型的设计模式...

    Java设计模式代码案例 (一):创建型设计模式.pdf

    Java设计模式代码案例 (一):创建型设计模式

    Java设计模式之创建型模式的几个小DEMO

    Java设计模式之创建型模式的几个小DEMO

    java设计模式—图解-附有代码

    java设计模式-图解-附有代码,创建型模式、结构型模式、行为性模式、等具体讲解,内附有图片、代码讲解

    单例模式源码java-DesignPattern:在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在

    在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在源码中的使用,每种设计模式都举了一个简单的小例子来进行实现,并加以注释 包名解释 一、DesignPattern 1.1 创建型模式 ...

    JAVA23种设计模式及快捷记忆

    设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。工厂模式、抽象工厂模式、...

    软件设计模式创建型模式实验代码

    ),单例模式(网站计算器是web应用程序的一项基本功能,用于统计使用网站的人数,可反应出网站的受欢迎程序,请设计一个简单的web页面(java,asp.net均可),并为该页面设计一个计算器,用来统计当前访问网址的用户数...

    JAVA设计模式,常用创建型、结构型、行为型模式介绍和代码示例

    设计模式 JAVA设计模式,常用创建型、结构型、行为型模式介绍和代码示例

    Java设计模式-图解-附代码

    1.1 创建型模式 4 1.1.1 工厂方法 4 1.1.2 抽象工厂 6 1.1.3 建造者模式 10 1.1.4 单态模式 13 1.1.5 原型模式 15 1.2 结构型模式 17 1.2.1 适配器模式 17 1.2.2 桥接模式 19 1.2.3 组合模式 23 1.2.4 装饰模式 26 ...

    免费开源!!Java 23种设计模式全归纳

    设计模式分为清晰类型,共23种: 创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。 结构类型模式:队列模式、桥接模式、装饰模式、组合模式、外观模式、共享元模式、代理模式。 行为类型模式...

    23种设计模式,创建型模式共5种,结构型模式7种,行为型模式11种

    设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的 总结。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于...

    java-design-patterns:Java 设计模式学习笔记

    Java Design PatternsJava 设计模式学习笔记,简单易懂,每个模式都有相应的代码示列,帮助学习理解。在线阅读地址:设计原则创建型模式作用:将创建与使用代码解耦结构型模式作用:将不同的功能代码解耦桥接模式...

    java源码包---java 源码 大量 实例

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java 简单工厂模式 源代码

    从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂...

    Java 设计模式详解超详细(含示例代码)

    Java设计模式可以分为创建型模式、结构型模式和行为型模式三类。创建型模式涉及对象的创建,包括单例模式、工厂模式、原型模式等;结构型模式关注对象之间的结构关系,包括适配器模式、桥接模式、组合模式等;行为型...

    java版本的设计模式的实现demo

    在Java编程中,运用合适的设计模式可以提高代码的可维护性、可扩展性和可复用性。以下是关于Java版本设计模式实现demo的一些补充说明: 1. 设计模式分类 设计模式通常分为三大类:创建型模式、结构型模式和行为型模式...

    Java设计模式整理

    java设计模式word整理,付代码说明,时候java进阶选手,欢迎选购! 目录 1 1. 设计模式 2 1.1 创建型模式 2 1.1.1 工厂方法 2 1.1.2 抽象工厂 4 1.1.3 建造者模式 6 1.1.4 单态模式 9 1.1.5 原型模式 10 1.2 结构型...

    酒店管理系统源码下载java-pattern:设计模式代码

    设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。 GOF: 对接口编程而不是对实现编程 优先使用对象组合而不是继承 设计模式在软件开发中的两个主要途径: 1.开发人员的共同平台: ...

    JAVA上百实例源码以及开源项目源代码

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

Global site tag (gtag.js) - Google Analytics