为生存而奔跑

   :: 首页 :: 联系 :: 聚合  :: 管理
  271 Posts :: 0 Stories :: 58 Comments :: 0 Trackbacks

留言簿(5)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 319826
  • 排名 - 75

最新评论

阅读排行榜

评论排行榜

用java接口实现工厂模式如下:

interface Service{
    
void method1();
    
void method2();
}

interface ServiceFactory{
    Service getService();
}

class Implementation1 implements Service{
    Implementation1(){};
    
public void method1(){System.out.println("Implemention1 method1");}
    
public void method2(){System.out.println("Implemention1 method2");}
}

class Implementation2 implements Service{
    Implementation2(){}
    
public void method1(){System.out.println("Implementation2 method1");}
    
public void method2(){System.out.println("Implementation2 method2");}
}

class Implementation1ServiceFactory implements ServiceFactory{
    
public Service getService(){
        
return new Implementation1();
    }
}

class Implementation2ServiceFactory implements ServiceFactory{
    
public Service getService(){
        
return new Implementation2();
    }
}

public class TopCoder{
    
public static void main(String[] args){
        serviceConsumer(
new Implementation1ServiceFactory());
        serviceConsumer(
new Implementation2ServiceFactory());
    }
    
    
public static void serviceConsumer(ServiceFactory sf){
        Service s
=sf.getService();
        s.method1();
        s.method2();
    }
}


该实现有一个小小的缺憾,那就是Implementation1 和 Implementation2的构造函数都是public。下面用Java的内部类实现工厂模式,可以弥补这个缺憾

interface Service{
    
void method1();
    
void method2();
}

interface ServiceFactory{
    Service getService();
}

class Implementation1 implements Service{
    Implementation1(){};
    
public void method1(){System.out.println("Implemention1 method1");}
    
public void method2(){System.out.println("Implemention1 method2");}
    
    
public static ServiceFactory factory=new ServiceFactory(){
        
public Service getService(){
            
return new Implementation1(); 
        }
    };
}

class Implementation2 implements Service{
    Implementation2(){}
    
public void method1(){System.out.println("Implementation2 method1");}
    
public void method2(){System.out.println("Implementation2 method2");}
    
    
public static ServiceFactory factory=new ServiceFactory(){
        
public Service getService(){
            
return new Implementation2(); 
        }
    };
}


public class TopCoder{
    
public static void main(String[] args){
        serviceConsumer(Implementation1.factory);
        serviceConsumer(Implementation2.factory);
    }
    
    
public static void serviceConsumer(ServiceFactory sf){
        Service s
=sf.getService();
        s.method1();
        s.method2();
    }
}
posted on 2010-04-10 10:32 baby-fly 阅读(449) 评论(0)  编辑 收藏 引用 所属分类: JavaDesign Pattern

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理