??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲福利国产,牛牛热在线视频,亚洲一区二区三区http://www.aygfsteel.com/sky_team/zh-cnTue, 17 Jun 2025 14:26:15 GMTTue, 17 Jun 2025 14:26:15 GMT60模板模式http://www.aygfsteel.com/sky_team/archive/2005/08/19/10550.htmlskyskyFri, 19 Aug 2005 13:15:00 GMThttp://www.aygfsteel.com/sky_team/archive/2005/08/19/10550.htmlhttp://www.aygfsteel.com/sky_team/comments/10550.htmlhttp://www.aygfsteel.com/sky_team/archive/2005/08/19/10550.html#Feedback0http://www.aygfsteel.com/sky_team/comments/commentRss/10550.htmlhttp://www.aygfsteel.com/sky_team/services/trackbacks/10550.html       
         模板Ҏ中分两种ҎQ一U是模板ҎQ另一U是基本Ҏ?BR>         模板ҎQ就是把基本Ҏl合在一起Ş成一个ȝ法或则总行为,q个模板Ҏ一般会在抽象定义ƈ且在子类U不加以修改的承下来。一个抽象类可以有Q意多个模板方法?BR>         基本ҎQ它又分为抽象方法,具体ҎQ钩子方法?BR>      抽象Ҏ由抽象类xQ由子类具体实现Q具体方法由抽象cȝ明ƈ实现Q而子cdƈ不实现或则置换,q里面也可以有工厂方法;钩子ҎQ由抽象cȝ明ƈ实现Q但是它是一个空的实玎ͼ一般都是由子类q行扩张实现?img src ="http://www.aygfsteel.com/sky_team/aggbug/10550.html" width = "1" height = "1" />

sky 2005-08-19 21:15 发表评论
]]>
FileReadhttp://www.aygfsteel.com/sky_team/archive/2005/08/19/10547.htmlskyskyFri, 19 Aug 2005 12:20:00 GMThttp://www.aygfsteel.com/sky_team/archive/2005/08/19/10547.htmlhttp://www.aygfsteel.com/sky_team/comments/10547.htmlhttp://www.aygfsteel.com/sky_team/archive/2005/08/19/10547.html#Feedback0http://www.aygfsteel.com/sky_team/comments/commentRss/10547.htmlhttp://www.aygfsteel.com/sky_team/services/trackbacks/10547.html
import java.io.*;

public class FileRead{
 private static double totalFile = 0;
 private static double totalDirectory = 0;

 public String replace(String value){
     StringBuffer replace = new StringBuffer(value);
     int i = 0;
     int last = replace.lastIndexOf("──");
     i = replace.indexOf("──");
     while((i != last)&&(i != -1)){
         replace.replace(i,i+"──".length(),"   ");
         i = replace.indexOf("──");
         last = replace.lastIndexOf("──");
     }
     return replace.toString();
 }

 public void searchFile(File f,String value,boolean b)throws IOException{
     StringBuffer string = new StringBuffer(value);
     string.append("──");
     boolean bool = b;
  String path = f.getAbsolutePath();
  File currentFile = new File(path); //取得当前路径的文?BR>  File[] file = currentFile.listFiles();

  for(int i=0;i<file.length;i++){      
      StringBuffer s = null;
      String lastDirectory = null; 
     
      /*
       * 判断文gҎ否ؓ该目录下的最后一个文件夹Q如果是的话Q则取消打印"?W号
       */
      for(int k=0;k<file.length;k++){
       if(file[k].isDirectory())
        lastDirectory = new String(file[k].getName()); 
      }
      if(file[i].getName().equals(lastDirectory)){
       if(string.indexOf("?) != -1){
           string.delete(string.lastIndexOf("?),string.lastIndexOf("?)+1);
       }
      }
       
      /*
       * 格式化打华ͼ符h后的"──"变ؓ"├──"Q当最后的W号不ؓ"│──"Ӟ
       */     
      if(!((string.lastIndexOf("──")-1) == string.lastIndexOf("│──"))){
          s = new StringBuffer(string.substring(0,string.lastIndexOf("──")));
       s.append("├──");         
      }else{
       if(string.indexOf("│──")!=-1){
        s = new StringBuffer(string.substring(0,string.lastIndexOf("│──")));
        s.append("├──");
       }
      }
     
      if(file[i].getName().equals(file[file.length-1].getName()))
       if(s != null)
        if(s.lastIndexOf("?) != -1)
         s.replace(s.lastIndexOf("?),s.lastIndexOf("?)+1,"?);
     
      /*
       * 如果s不ؓI,则将s传入Ҏreplace中进行格式化
       */
      if(s != null)           
       System.out.println(replace(s.toString()) + file[i].getName());
           
   if(file[i].isDirectory()){   
       totalDirectory  += 1;
        
       /*
        * 如果该文件夹的子目录下还有两个以上的文g和文件夹Q则打印一??W号Qƈ标记bool为true
        */
           String pathstring = file[i].getAbsolutePath();
     File current = new File(pathstring); //取得当前路径的文?BR>     File[] fp = current.listFiles();
     if(fp.length >1){
         bool = true;                  
     }
    
       if(bool)
        string.append("?);
      
       searchFile(file[i],string.toString(),bool);
      
       /*
        * 如果bool已经被标记过Q则上一ơ的"?W号删除
        */
       if(bool)
        if(string.indexOf("?) != -1)
            string.delete(string.lastIndexOf("?),string.length());
       bool = false; 
   }
   totalFile += 1; 
  }
 } 
 public static void main(String args[])throws IOException{
  String path = null;
  if(args.length<1)
   path =".";
  else
   path = args[0];
  FileRead read = new FileRead();
  File file = new File(path);
  
  if(!file.exists()){
   System.err.print("the path is error");
   System.exit(1);
  } 
  read.searchFile(file,"?,false);
  System.out.println("the file is :" + (totalFile-totalDirectory));
  System.out.println("thd directory is : " + totalDirectory);
 }
}

该程序存在一个问题,也就是当jdk中的FilecL法判断目录下的一些目录是文gҎ则是文gӞ



sky 2005-08-19 20:20 发表评论
]]>
Strategy {略模式http://www.aygfsteel.com/sky_team/archive/2005/08/14/10099.htmlskyskySun, 14 Aug 2005 15:51:00 GMThttp://www.aygfsteel.com/sky_team/archive/2005/08/14/10099.htmlhttp://www.aygfsteel.com/sky_team/comments/10099.htmlhttp://www.aygfsteel.com/sky_team/archive/2005/08/14/10099.html#Feedback0http://www.aygfsteel.com/sky_team/comments/commentRss/10099.htmlhttp://www.aygfsteel.com/sky_team/services/trackbacks/10099.html
        {略模式的对法的包装,是把使用法的责d法本生分开Q委z不同的对象管理。策略模式通常把一个系列的法包装Cpd的策略类里面Q作Z个抽象策略类的子cR?BR>使用条gQ?BR>        如果在一个系l种有许多类Q他们之间的区别仅仅在于他们的行为,q且q个pȝ需要动态的在几U算法种选择一U?nbsp;      

sky 2005-08-14 23:51 发表评论
]]>
Immutable 不变模式http://www.aygfsteel.com/sky_team/archive/2005/08/14/10097.htmlskyskySun, 14 Aug 2005 15:39:00 GMThttp://www.aygfsteel.com/sky_team/archive/2005/08/14/10097.htmlhttp://www.aygfsteel.com/sky_team/comments/10097.htmlhttp://www.aygfsteel.com/sky_team/archive/2005/08/14/10097.html#Feedback2http://www.aygfsteel.com/sky_team/comments/commentRss/10097.htmlhttp://www.aygfsteel.com/sky_team/services/trackbacks/10097.html       
        不变模式可以增强对象的强壮性,不变模式准许多个对象׃n一个对象,q降低了对该对象q行q发讉K时的同步化开销。如果要修改一个不变对象的状态,则需要创Z个新的对象,q将其存入新的对象里。不变模式只涉及C个类Q一个类的内部状态一旦被创徏以后Q在整个期间都不会发生变化。他有两U一U是Z变模式和׃变模式?BR>        ׃变模式:
首先满没有Ҏ可以改变对象的状态,则对象一旦被创徏之后Q对象的状态就不会改变。二该对象的所有的属性都是私有的Qƈ且不准许声明M公有的方法来改变他们。三q个对象所引用的对象也应该是不变的对象Q如果在初始化时应用了一个可变的对象Q则应该对该可变对象q行复制一份,而不要用原来的拯。这U模式的~点是他可以用子c,q且子类可以是可变的对象。可变的子类可能一修改父类对象的状态,从而可能会允许外界修改父对象的状态?BR>
问题Q?/FONT>
       Z么说可变的对象可以修该父cd象的状态呢Q怎样做?

Z变模式首先要满׃变模式,然后这个类声明成finalc,则它变不可能有子cMQƈ且也该对象所考虑到的所有方法声明ؓfinal?BR>不变模式与n元模式有很大的相同处Q他们的对象状态都有要求不随环境的变化而变化,不过享元模式的内늊态在不媄响n元对象的׃nӞ可以为可变的。不变模式对对象的要求要比n元模式对对象的要求更严格?BR>




sky 2005-08-14 23:39 发表评论
]]>
Brige 桥梁模式http://www.aygfsteel.com/sky_team/archive/2005/08/12/9992.htmlskyskyFri, 12 Aug 2005 15:28:00 GMThttp://www.aygfsteel.com/sky_team/archive/2005/08/12/9992.htmlhttp://www.aygfsteel.com/sky_team/comments/9992.htmlhttp://www.aygfsteel.com/sky_team/archive/2005/08/12/9992.html#Feedback0http://www.aygfsteel.com/sky_team/comments/commentRss/9992.htmlhttp://www.aygfsteel.com/sky_team/services/trackbacks/9992.html   
        桥梁模式是抽象化和实现化脱藕,使得两者可以独立地变法。例子如java中的peer架构?BR>        桥梁模式与适配器模式的区别是,

sky 2005-08-12 23:28 发表评论
]]>
Facade 门面模式http://www.aygfsteel.com/sky_team/archive/2005/08/12/9987.htmlskyskyFri, 12 Aug 2005 11:38:00 GMThttp://www.aygfsteel.com/sky_team/archive/2005/08/12/9987.htmlhttp://www.aygfsteel.com/sky_team/comments/9987.htmlhttp://www.aygfsteel.com/sky_team/archive/2005/08/12/9987.html#Feedback0http://www.aygfsteel.com/sky_team/comments/commentRss/9987.htmlhttp://www.aygfsteel.com/sky_team/services/trackbacks/9987.html        在外界访问要讉K多个内部pȝӞq且他与q些内部pȝ有着复杂的关pLQ我们则可以用门面模式来解决q样的问题?BR>         门面模式他只是提供一个可以共外界方便讉K内部子系l的一个接口,他ƈ不会对子pȝq行扩展Q他只提供子pȝ所h的方法。对外界来说Q他是一个子pȝQ但是内部的子系lƈ不知道有q么一个类。例如:一个学生要d书馆借书Q这里有3个表Qrule是记录不同的读者的借书规则Q如研究生可以?而本U生只能?本)Qpublish表是记录q期未还书的学生Qpasswork是记录图书馆所颁发q的借书证。如果一个学生要借书Q则他必要有一个在passwork中存在的借书证,q且没有在publish中的情况Q则可以保证向该学生提供借阅Q但是借阅的书则要按rule中的规则来进行。所以一个学生client借书必须讉Kq些c,Z便于理Q我们提供一?nbsp; FacadeFactorycL处理Q这个类提供了所有client向子pȝ讉K的方法。这样对于client来说p村֤了,也便于我们维护代码了。但是FacadeFactory不能够向client提供内部子系l不存在的方法?BR>        ׃一个系l中所需要的只需要一个实例,则我们可以把门面c设|ؓ单例c,如上面的FacadeFactoryQ他应该讄Z个单例类Q这样就不会发生多个人同时借一本书了?BR>       

sky 2005-08-12 19:38 发表评论
]]>
flyweight patternhttp://www.aygfsteel.com/sky_team/archive/2005/08/11/9848.htmlskyskyThu, 11 Aug 2005 14:37:00 GMThttp://www.aygfsteel.com/sky_team/archive/2005/08/11/9848.htmlhttp://www.aygfsteel.com/sky_team/comments/9848.htmlhttp://www.aygfsteel.com/sky_team/archive/2005/08/11/9848.html#Feedback0http://www.aygfsteel.com/sky_team/comments/commentRss/9848.htmlhttp://www.aygfsteel.com/sky_team/services/trackbacks/9848.html享元模式Q?/SPAN>flyweight pattern

     享元模式包括两种状态,内蕴状态和外蕴状态。他的种cL单纯享元模式和复合n元模式,l构囑֦下:

我们从结构种可以看出Q复合n元模式是由单Un元模式和合成模式l合而成的?/SPAN>

享元模式有四U角Ԍ抽象享元角色Q具体n元角Ԍ享元工厂角色Q和客户角色。n元模式中的n元工厂角色可以通过单例模式来实现?/SPAN>

使用条gQ?/SPAN>

    一个系l中有大量的对象Q这些对象消耗大量的内存Q这些对象大部䆾是可以外部化的,q些对象可以按照内蕴状态分成很多的l,当把外蕴对象从对象中t除Ӟ每一个组都可以仅用一个对象代替,软gpȝ不依赖这些对象的w䆾Q换a之,q些对象可以是不可分辨的。不q他要用一个维护记录了pȝ已有的所以n元的表,而这需要消耗资源。因此应当在有够多的n元的实例可提供共享实才值得使用享元模式?/SPAN>

sky 2005-08-11 22:37 发表评论
]]>
装饰模式http://www.aygfsteel.com/sky_team/archive/2005/08/11/9847.htmlskyskyThu, 11 Aug 2005 14:36:00 GMThttp://www.aygfsteel.com/sky_team/archive/2005/08/11/9847.htmlhttp://www.aygfsteel.com/sky_team/comments/9847.htmlhttp://www.aygfsteel.com/sky_team/archive/2005/08/11/9847.html#Feedback0http://www.aygfsteel.com/sky_team/comments/commentRss/9847.htmlhttp://www.aygfsteel.com/sky_team/services/trackbacks/9847.html   装饰模式Q?/SPAN>

        他的各个角色的作用ؓQ抽象角Ԍl出一个抽象的接口Q以规范准备接收附加责Q的对象?/SPAN>

        具体角色Q定义一个将要接攉加责ȝcR?/SPAN>

        装饰角色Q持有一个构件对象的实例Qƈ定义一个雨抽象接口一致的接口?/SPAN>

        具体装饰角色Q负责给构g对象“脓上”附加责仅R?/SPAN>

装饰cM般在以下情况使用Q?/SPAN>

1?SPAN style="FONT: 7pt 'Times New Roman'">  需要扩展一个类的功能,或给一个类增加附加责Q?/SPAN>

2?SPAN style="FONT: 7pt 'Times New Roman'">  需要动态的l一个对象增加功能,q些功能可以再动态的销?/SPAN>

3?SPAN style="FONT: 7pt 'Times New Roman'">  需要增加由一些基本的排列l合产生非常大量的功能,从而ɾl承关系变得不现实?/SPAN>          

    

他有很多特点Q?/SPAN>

1?SPAN style="FONT: 7pt 'Times New Roman'">  装饰模式雨承关pȝ目的都是要扩展对象的功能Q但是装饰模式可以提供比l承更多的灵zL。装饰模式准pȝ动态的军_“脓上”一个需要的“装饰”,或者除掉一个不需要的装饰。而承则不同Q承关pL静态的Q他在系l运行前决定了?/SPAN>

2?SPAN style="FONT: 7pt 'Times New Roman'">  他可以通过使用不同的具体修饰类以及q些装饰cȝ排例l合Q设计可以创造更多不同行为的l合?/SPAN>     

3?SPAN style="FONT: 7pt 'Times New Roman'">  他虽然比l承性要灉|Q这意味着他比l承更容易出错?/SPAN>

~点Q由于用装饰模式可以比使用l承关系需要较数目的c,但是在另一斚wQ用装饰模式会产生比用承方式更多的对象。这在用时q行错误查询变得更困难了Q特别是q些对象看上去都很像?/SPAN>

 



sky 2005-08-11 22:36 发表评论
]]>
2005-8-8http://www.aygfsteel.com/sky_team/archive/2005/08/09/9652.htmlskyskyTue, 09 Aug 2005 05:03:00 GMThttp://www.aygfsteel.com/sky_team/archive/2005/08/09/9652.htmlhttp://www.aygfsteel.com/sky_team/comments/9652.htmlhttp://www.aygfsteel.com/sky_team/archive/2005/08/09/9652.html#Feedback0http://www.aygfsteel.com/sky_team/comments/commentRss/9652.htmlhttp://www.aygfsteel.com/sky_team/services/trackbacks/9652.htmlimport java.util.*;

class BookName{
 String name;
 int number;
}
abstract class Note{
 BookName name = new BookName();
 abstract public void setName(String value);
 abstract public int getNumber();
 abstract public void setNumber(int value);
 abstract public String getName();

class StudentNote extends Note implements Cloneable{
 BookName name = new BookName();
 int isbn;
 public void setName(String value){
  name.name = value;
 }
 public void setNumber(int i){
  name.number = i;
 }
 public int getNumber(){
  return name.number;
 }
 public String getName(){
  return name.name;
 }
 public Object clone() throws CloneNotSupportedException{
  StudentNote st = new StudentNote();
  st = (StudentNote)super.clone();
  st.name = new BookName();
  st.name.name = name.name;
  st.name.number = name.number;
  return st;
 }
 public void setIsbn(int i){
  isbn = i;
 }
 public int getIsbn(){return isbn;}
}
class Manager{
 private Vector v = new Vector();
 
 public void add(Note note){
  v.addElement(note);
 }
 public Note get(int i){
  return (Note)v.get(i);
 }
 public int size(){
  return v.size();
 }
}

class Client{
 private StudentNote student;
 private static Manager client = new Manager();
 public void register()throws CloneNotSupportedException{
  student = new StudentNote();
  StudentNote st = (StudentNote)student.clone();
  client.add(st);
 }
 public static Manager getInstance(){
  return client;
 }

}

class test{ 
 public static void main(String[] args)throws CloneNotSupportedException {
  Client c = new Client();
  c.register(); 
  c.register();
  Manager manager = c.getInstance();
  StudentNote student = (StudentNote)manager.get(0);
  StudentNote st = (StudentNote)manager.get(1);
  student.setName("sky");
  student.setNumber(101);
  student.setIsbn(10001);
  st.setName("fly");
  st.setNumber(102);
  st.setIsbn(10002);
  System.out.println(student.getName() + "\t" + student.getNumber() + "\t" + student.getIsbn());
  System.out.println(st.getName() + "\t" + st.getNumber() + "\t" + st.getIsbn());
 }
}



sky 2005-08-09 13:03 发表评论
]]>
2005-8-2http://www.aygfsteel.com/sky_team/archive/2005/08/03/9083.htmlskyskyTue, 02 Aug 2005 16:00:00 GMThttp://www.aygfsteel.com/sky_team/archive/2005/08/03/9083.htmlhttp://www.aygfsteel.com/sky_team/comments/9083.htmlhttp://www.aygfsteel.com/sky_team/archive/2005/08/03/9083.html#Feedback0http://www.aygfsteel.com/sky_team/comments/commentRss/9083.htmlhttp://www.aygfsteel.com/sky_team/services/trackbacks/9083.html  <java与模?/SPAN>> ---电子?/SPAN> page 425

 

装饰模式?/SPAN>Decorator

装饰模式有名包装模式Q装饰模式以对客L透明的方式来扩展对象的功能,是承关pȝ一个替代的Ҏ?/SPAN>

客户端ƈ不会觉得装饰模式在装饰前和装饰后有什么不同,他可以在不用更多的子类的情况下来进行对对象的功能加以扩展。结构图如下Q?BR>

装饰模式原来被装饰类的一个子cȝ实例Q把客户端的调用委派到被装饰cR他有以下组成:抽象构gQ具体构Ӟ装饰角色Q具体装饎ͼ他一般在下面q些情况使用他最好:

1?SPAN style="FONT: 7pt 'Times New Roman'">  需要扩展一个类的功能,或给一个类增加附加责Q?/SPAN>

2?SPAN style="FONT: 7pt 'Times New Roman'">  需要动态的l一个对象增加功能,q些功能可能被动态的撤消?/SPAN>

3?SPAN style="FONT: 7pt 'Times New Roman'">  需要增加一些基本功能的排例l合而生的非常大量的功能,从而ɾl承关系变得不现实?/SPAN>

优点Q他可以灉|的增加一个类或对象的功能Q也可以通过不同的具体装饰类的排例组合设计出更加复杂的,功能更强的类?/SPAN>

~点Q他虽然增加了一个类的灵zL,但同时他也给一个类的管理带来了复杂性?/SPAN>

sky 2005-08-03 00:00 发表评论
]]>
վ֩ģ壺 ˷| Զ| | ǿ| ƽԶ| | | | | | ͨ| | ̨ǰ| ˮ| Ƥ| | | | ¡| Ԫ| | ܱ| ƽ| ¸| ˫| ɳ| | ݶ| | | | | ̫| ¡| Ӧ| կ| | | ɽ| | ۳|