??xml version="1.0" encoding="utf-8" standalone="yes"?>久久大逼视频,精品国产网站地址,在线观看视频一区http://www.aygfsteel.com/vjame/category/35621.html优化代码是无止境?/description>zh-cnThu, 27 Nov 2008 15:28:20 GMTThu, 27 Nov 2008 15:28:20 GMT60抽象工厂http://www.aygfsteel.com/vjame/archive/2008/11/26/242798.htmllanjhlanjhWed, 26 Nov 2008 07:59:00 GMThttp://www.aygfsteel.com/vjame/archive/2008/11/26/242798.htmlhttp://www.aygfsteel.com/vjame/comments/242798.htmlhttp://www.aygfsteel.com/vjame/archive/2008/11/26/242798.html#Feedback0http://www.aygfsteel.com/vjame/comments/commentRss/242798.htmlhttp://www.aygfsteel.com/vjame/services/trackbacks/242798.html 奛_造物Q她可以造h和动物,用阴l造女人和雌性动物,用阳l造男人和雄性动物,吃东西,会说话。动物也要吃东西Q还会睡?
package com.strongit.factory;

interface Person{
    
public void eat();
    
public void talk();
}

class Man implements Person{

    
public void eat() {
        
// TODO Auto-generated method stub
        System.out.println("男h在吃东西。。。?/span>");
    }

    
public void talk() {
        
// TODO Auto-generated method stub
        System.out.println("男h在说话。。。?/span>");
    }
    
}

interface Animal{
    
public void eat();
    
public void sleep();
}

class Bull implements Animal{

    
public void eat() {
        
// TODO Auto-generated method stub
        System.out.println("公牛在吃东西。。。?/span>");
    }

    
public void sleep() {
        
// TODO Auto-generated method stub
        System.out.println("公牛在睡觉。。。?/span>");
    }
    
}
class Cow implements Animal{

    
public void eat() {
        
// TODO Auto-generated method stub
        System.out.println("母牛在吃东西。。。?/span>");
    }

    
public void sleep() {
        
// TODO Auto-generated method stub
        System.out.println("母牛在睡觉。。。?/span>");
    }
    
}

class Woman implements Person{

    
public void eat() {
        
// TODO Auto-generated method stub
        System.out.println("女h在吃东西。。。?/span>");
    }

    
public void talk() {
        
// TODO Auto-generated method stub
        System.out.println("女h在说话。。。?/span>");
    }
    
}

//表示奛_
interface NWFactory{
    
public Person createPerson(String type);
    
public Animal createAnimal(String type);
}

//阳-->用来造男人和雄性动物(BullQ?/span>
class YangSheng implements NWFactory{

    Man man 
= null;
    Bull bull 
= null;
    
public Bull createAnimal(String type) {
        
try {
            bull 
= (Bull)Class.forName("com.strongit.factory."+type).newInstance();
        } 
catch (InstantiationException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (IllegalAccessException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (ClassNotFoundException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
        
return bull;
    }

    
public Man createPerson(String type) {
        
try {
            man 
= (Man)Class.forName("com.strongit.factory."+type).newInstance();
        } 
catch (InstantiationException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (IllegalAccessException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (ClassNotFoundException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
        
return man;
    }
}

//阴-->用来造女人和雌性动物(CowQ?/span>
class YinSheng implements NWFactory{

    Woman woman 
= null;
    Cow cow 
= null;
    
public Cow createAnimal(String type) {
        
try {
            cow 
= (Cow)Class.forName("com.strongit.factory."+type).newInstance();
        } 
catch (InstantiationException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (IllegalAccessException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (ClassNotFoundException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
        
return cow;
    }

    
public Woman createPerson(String type) {
        
try {
            woman 
= (Woman)Class.forName("com.strongit.factory."+type).newInstance();
        } 
catch (InstantiationException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (IllegalAccessException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (ClassNotFoundException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
        
return woman;
    }
    
}


public class FactoryDemo1 {

    
/**
     * 
@param args
     
*/
    
public static void main(String[] args) {
        
// TODO Auto-generated method stub
        
//实例化一个阳l?ys
        YangSheng ys=new YangSheng();
        
//实例化一个阴l?ys1
        YinSheng ys1=new YinSheng();
        
//造男人和女h,p1是男?p2是女?/span>
        Person p1=ys.createPerson("Man");
        Person p2
=ys1.createPerson("Woman");
        
//造动物,a1是公牛(BullQ,a2是母牛(CowQ?/span>
        Animal a1=ys.createAnimal("Bull");
        Animal a2
=ys1.createAnimal("Cow");
        a1.eat();
        a1.sleep();
        a2.eat();
        a2.sleep();
        p1.eat();
        p1.talk();
        p2.eat();
        p2.talk();

    }

}

源代码下载: http://www.aygfsteel.com/Files/vjame/FactoryDemo03.rar

lanjh 2008-11-26 15:59 发表评论
]]>
工厂Ҏ模式http://www.aygfsteel.com/vjame/archive/2008/10/31/237861.htmllanjhlanjhFri, 31 Oct 2008 10:23:00 GMThttp://www.aygfsteel.com/vjame/archive/2008/10/31/237861.htmlhttp://www.aygfsteel.com/vjame/comments/237861.htmlhttp://www.aygfsteel.com/vjame/archive/2008/10/31/237861.html#Feedback0http://www.aygfsteel.com/vjame/comments/commentRss/237861.htmlhttp://www.aygfsteel.com/vjame/services/trackbacks/237861.html工厂Ҏ模式
工厂Ҏ模式和简单工厂模式在l构上的不同是很明显的。工厂方法模式的核心是一个抽象工厂类Q而简单工厂模式把

核心攑֜一个具体类上。工厂方法模式可以允许很多具体工厂类从抽象工厂类中将创徏行ؓl承下来Q从而可以成为多个简单工厂模式的l合Q进而推q了单工厂模式?/p>

此模式涉及到抽象工厂角色Q汽车厂Q,具体工厂角色Q具体的汽R车间Q,抽象产品角色Q汽车)以及具体产品角色Q私车,公交巴士Q?


package com.strongit.factory;


//抽象汽R
interface Car{
    
public void run();
    
public void stop();
}

//奔驰汽R
class Benz implements Car{
    
public void run() {
        System.out.println(
"BMW run ");
    }

    
public void stop() {
        System.out.println(
"BMW stop  ");
    }
}

//特汽R
class Ford implements Car{

    
public void run() {
        System.out.println(
"Ford run ");
    }
    
public void stop() {
        System.out.println(
"Ford stop ");
    }
    
}

//公交巴士
class Bus implements Car{

    
public void run() {

        System.out.println(
"Bus run ");
    }

    
public void stop() {
        
// TODO Auto-generated method stub
        System.out.println("Bus stop ");
    }
    
}

//q你巴士
class MinBus implements Car{

    
public void run() {

        System.out.println(
"MinBus run ");
    }

    
public void stop() {

        System.out.println(
"MinBus stop ");
    }
    
}

//抽象工厂 
interface Abstractfactory{

}

//汽R工厂
class CarFactory implements Abstractfactory{
    
public Car getCar(String type){
        Car c
=null;
        
try {
            c
=(Car)Class.forName("com.strongit.factory."+type).newInstance();
        } 
catch (InstantiationException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (IllegalAccessException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (ClassNotFoundException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
        
return c;
    }
}

//巴士工厂
class BusFactory implements Abstractfactory{
    
public Car getBus(String type){
        Car c
=null;
        
try {
            
//java反射机制
            c=(Car)Class.forName("com.strongit.factory."+type).newInstance();
        } 
catch (InstantiationException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (IllegalAccessException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        } 
catch (ClassNotFoundException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
        
return c;
    }
}

//客服端调?/span>
public class FactoryDemo {

    
public static void main(String[] args) {
        
//CarFactory cf=new CarFactory();
        BusFactory bf=new BusFactory();
        Car c
=null;
        
//c=cf.getCar("Benz");
        c=bf.getBus("MinBus");
        c.run();
        c.stop();
    }

}

/** q行l果:
MinBus run 
MinBus stop 
 
*/




lanjh 2008-10-31 18:23 发表评论
]]>
单态模式和单工厂模?/title><link>http://www.aygfsteel.com/vjame/archive/2008/10/30/237637.html</link><dc:creator>lanjh</dc:creator><author>lanjh</author><pubDate>Thu, 30 Oct 2008 08:47:00 GMT</pubDate><guid>http://www.aygfsteel.com/vjame/archive/2008/10/30/237637.html</guid><wfw:comment>http://www.aygfsteel.com/vjame/comments/237637.html</wfw:comment><comments>http://www.aygfsteel.com/vjame/archive/2008/10/30/237637.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/vjame/comments/commentRss/237637.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/vjame/services/trackbacks/237637.html</trackback:ping><description><![CDATA[<strong style="color: #ff0000">单态模?/strong><br />  Singleton模式主要作用是保证在Java应用E序中,一个类Class只有一个实例存在?<br /> 在项目的很多地方都会用到它,比如说数据库的链接?br /> 使用Singleton的好处还在于可以节省内存Q因为它限制了实例的个数Q有利于Java垃圾回收?br /> <br /> 1. ~写代码<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">package</span><span style="color: #000000"> com.strongit.singleton;<br /> <br /> <br /> </span><span style="color: #0000ff">class</span><span style="color: #000000"> A {<br />     </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">final</span><span style="color: #000000"> A a </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> A();<br />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> A getSingleInstance(){<br />         </span><span style="color: #0000ff">return</span><span style="color: #000000"> a;<br />     }<br />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> say(){<br />         System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">hello<img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />     }<br /> }<br /> <br /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> SingletonDemo {<br /> <br />     </span><span style="color: #008000">/**</span><span style="color: #008000"><br />      * </span><span style="color: #808080">@param</span><span style="color: #008000"> args<br />      </span><span style="color: #008000">*/</span><span style="color: #000000"><br />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) {<br />         </span><span style="color: #008000">//</span><span style="color: #008000"> TODO Auto-generated method stub</span><span style="color: #008000"><br /> </span><span style="color: #000000">            A a </span><span style="color: #000000">=</span><span style="color: #000000"> A.getSingleInstance();<br />             a.say();<br />             System.out.println(A.getSingleInstance());<br /> <br />             System.out.println(A.getSingleInstance());<br />         <br />     }<br /> <br /> }<br /> </span></div> <br /> 2.q行l果<br /> hello...<br /> com.strongit.singleton.A@1c78e57<br /> com.strongit.singleton.A@1c78e57<br /> <br /> <br /> <strong style="color: #ff0000">单工厂模?/strong><br /> 单工厂模式又叫静态工厂模式,֐思义Q它是用来实例化目标cȝ静态类。下面我主要通过一个简单的实例说明单工厂及其优炏V?nbsp; <br /> <br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">package</span><span style="color: #000000"> com.strongit.factory;<br /> <br /> <br /> </span><span style="color: #008000">//</span><span style="color: #008000">抽象汽R</span><span style="color: #008000"><br /> </span><span style="color: #0000ff">interface</span><span style="color: #000000"> Car{<br />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> run();<br />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> stop();<br /> }<br /> <br /> </span><span style="color: #008000">//</span><span style="color: #008000">奔驰汽R</span><span style="color: #008000"><br /> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Benz </span><span style="color: #0000ff">implements</span><span style="color: #000000"> Car{<br />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> run() {<br />         System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">BMW run <img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />     }<br /> <br />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> stop() {<br />         System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">BMW stop  <img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />     }<br /> }<br /> <br /> </span><span style="color: #008000">//</span><span style="color: #008000">特汽R</span><span style="color: #008000"><br /> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Ford </span><span style="color: #0000ff">implements</span><span style="color: #000000"> Car{<br /> <br />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> run() {<br />         System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Ford run <img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />     }<br />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> stop() {<br />         System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Ford stop <img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />     }<br />     <br /> }<br /> <br /> </span><span style="color: #008000">//</span><span style="color: #008000">工厂帮助客服q回实例化对?/span><span style="color: #008000"><br /> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Factory{<br />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> Car getCarInstance(String type){<br />         Car car </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />         </span><span style="color: #0000ff">try</span><span style="color: #000000"> {<br />             </span><span style="color: #008000">//</span><span style="color: #008000">java反射机制</span><span style="color: #008000"><br /> </span><span style="color: #000000">            car </span><span style="color: #000000">=</span><span style="color: #000000"> (Car)Class.forName(</span><span style="color: #000000">"</span><span style="color: #000000">com.strongit.factory.</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">type).newInstance();<br />         } </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (InstantiationException e) {<br />             e.printStackTrace();<br />         } </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (IllegalAccessException e) {<br />             e.printStackTrace();<br />         } </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (ClassNotFoundException e) {<br />             e.printStackTrace();<br />         }<br />         </span><span style="color: #0000ff">return</span><span style="color: #000000"> car;<br />     }<br /> }<br /> <br /> <br /> </span><span style="color: #008000">//</span><span style="color: #008000">客服端调?/span><span style="color: #008000"><br /> </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> FactoryDemo {<br /> <br />     </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) {<br />         String type </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">Ford</span><span style="color: #000000">"</span><span style="color: #000000">;<br />         Car car </span><span style="color: #000000">=</span><span style="color: #000000"> Factory.getCarInstance(type);<br />         </span><span style="color: #0000ff">if</span><span style="color: #000000">(car </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">){<br />             System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">error <img src="http://www.aygfsteel.com/Images/dot.gif" alt="" /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />         }</span><span style="color: #0000ff">else</span><span style="color: #000000">{<br />             car.run();<br />         }<br />     }<br /> }<br /> </span></div> <br /> <img src ="http://www.aygfsteel.com/vjame/aggbug/237637.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/vjame/" target="_blank">lanjh</a> 2008-10-30 16:47 <a href="http://www.aygfsteel.com/vjame/archive/2008/10/30/237637.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>代理模式之动态代?/title><link>http://www.aygfsteel.com/vjame/archive/2008/10/29/237433.html</link><dc:creator>lanjh</dc:creator><author>lanjh</author><pubDate>Wed, 29 Oct 2008 10:54:00 GMT</pubDate><guid>http://www.aygfsteel.com/vjame/archive/2008/10/29/237433.html</guid><wfw:comment>http://www.aygfsteel.com/vjame/comments/237433.html</wfw:comment><comments>http://www.aygfsteel.com/vjame/archive/2008/10/29/237433.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/vjame/comments/commentRss/237433.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/vjame/services/trackbacks/237433.html</trackback:ping><description><![CDATA[动态代?br /> <br /> 自从JDK的版本到1.3以后Qjava语言通过java.lang.reflect库中Q提供了三个cL直接支持代理模式?br /> 分别是:ProxyQInvocoationHandler和Method?br /> <br /> ProxycM得设计师能够在运行时间创Z理对?br /> 当系l有了一个代理对象后Q对源对象的Ҏ调用会首先被分派l一个调用处理器QInvocationHandlerQ?/接口<br /> InvocationHandler接口中有一个invokeQ)Ҏ<br /> E序可以在调用处理器的invokeҎ中截莯个调用,q行额外的操?br /> <br /> 创徏动态代理对象的步骤Q?br /> 1.指明一pd的接口来创徏一个代理对?br /> 2.创徏一个调用处理器QInvocationHandlerQ对?br /> 3.这个代理指定ؓ某个其他对象的代理对?br /> 4.在调用处理器的invokeҎ中采取代理,一斚w调用传递给真实对象Q另一斚w执行各种需要做的操作?br /> <br /> 电脑代理?br /> 抽象主题角色QSaleComputer<br /> 真实主题角色QComputerMaker<br /> 代理主题角色QComputerProxy<br /> Java动态代理的q程QProxyFunctionQ我们定义的一个类Q由q个cL具体的完成代理过E)<br /> <br /> 源代?<a href="http://www.aygfsteel.com/Files/vjame/ProxyDemo02.rar">http://www.aygfsteel.com/Files/vjame/ProxyDemo02.rar</a><br /> <img src ="http://www.aygfsteel.com/vjame/aggbug/237433.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/vjame/" target="_blank">lanjh</a> 2008-10-29 18:54 <a href="http://www.aygfsteel.com/vjame/archive/2008/10/29/237433.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>代理模式http://www.aygfsteel.com/vjame/archive/2008/10/29/237412.htmllanjhlanjhWed, 29 Oct 2008 09:04:00 GMThttp://www.aygfsteel.com/vjame/archive/2008/10/29/237412.htmlhttp://www.aygfsteel.com/vjame/comments/237412.htmlhttp://www.aygfsteel.com/vjame/archive/2008/10/29/237412.html#Feedback0http://www.aygfsteel.com/vjame/comments/commentRss/237412.htmlhttp://www.aygfsteel.com/vjame/services/trackbacks/237412.html  代理模式

代理模式又叫Proxy模式Q英文)。所谓的代理Q就是一个h或者一个机构代替另一个h或者另一个机构去做一些事情。(cM于中介或者代理商Q?br /> Windows操作pȝ里面的例?eg: 快捷方式

代理模式的结?br />
代理模式所涉及的角色有Q?br /> 抽象主题角色Q声明了真实主题与代理主题的共同接口Q共有的Ҏ)
代理主题角色Q含有对真实主题角色的引用(操作真实M对象Q,代理角色通常在将客户端调用传递给真实主题对象的之前或者之后都会执行某些操作(ҎQ,而不是只单纯的返回真实的对象?br /> 真实主题角色Q定义了代理角色所代表的真实对象?br />

《西游记》中的代理模?br /> 高老庄的高家小姐,大徒弟孙悟空Q未归依我佛的八戒?br /> 悟空代替了高家小姐去和八戒见面,然后制服了八戒?/p>

抽象主题角色QMiss Gao 栯和D止行?br /> 代理主题角色Q孙悟空Q拥有Miss Gao的样貌和举止行ؓQ还有另外的一个功能(制服八戒Q?br /> 真是M角色Q?Miss Gao



在代理模式里Q有一个很重要的东?br /> 动态代?br /> 自从JDK的版本到1.3以后Qjava语言通过java.lang.reflect库中Q提供了三个cL直接支持代理模式?br /> 分别是:ProxyQInvocoationHandler和Method?br />
一个例子:电脑代理?br /> 抽象主题角色QSaleComputer
代理主题角色QComputerProxy
真是M角色QComputerMaker

时序图:



 1 package org.jzkangta.proxydemo;
 2 
 3 abstract class SaleComputer{
 4     abstract public void SaleComputer();
 5 }
 6 //真实的主题角ԌComputerMakerQ?/span>
 7 class ComputerMaker extends SaleComputer{
 8     public void SaleComputer(){
 9         System.out.println("卖出了一台电脑。。?/span>");
10     }
11 }
12 //代理的主题角?ComputerProxy)
13 class ComputerProxy extends SaleComputer{
14     ComputerMaker cm=null;
15     public void youHui(){
16         System.out.println("我给你优?img alt="" src="http://www.aygfsteel.com/Images/dot.gif" />.");
17     }
18     public void giveMouse(){
19         System.out.println("我还送你一个鼠标。。?/span>");
20     }
21     public void SaleComputer(){
22         youHui();
23         giveMouse();
24         if(cm==null){
25             cm=new ComputerMaker();
26         }
27         cm.SaleComputer();
28     }
29 }
30 public class ProxyDemo {
31 
32     
33     public static void main(String[] args) {
34         //SaleComputer sc=new ComputerMaker();
35         SaleComputer sc=new ComputerProxy();
36         sc.SaleComputer();
37 
38     }
39 
40 }
41 

源代?http://www.aygfsteel.com/Files/vjame/ProxyDemo.rar

lanjh 2008-10-29 17:04 发表评论
]]>
վ֩ģ壺 | | ͤ| ɼ| | | ͨ| | | Ȫ| ¡| | | ˮ| ţ| | | | Ϫ| | ij| | | е| | | | | ƽ| ɽ| ɽ| ɽ| | ƾ| ʷ| ľ| | | | | ƽԭ|