java设计模式之工厂方法模式

工厂方法模式是对简单工厂模式的改进,克服了简单工厂模式不能很好的遵循开闭原则的缺点。工厂方法模式对工厂类进行了抽象化,并为每一种对应的产品创建一个对应的工厂类。当系统中引进了一种新的产品时,只需创建一个工厂类继承自工厂抽象类即可,无须对现有的系统做任何的修改。从而使系统满足了开闭原则的要求,提高了系统的可扩展性。
上一节的产品类是使用接口来进行抽象化操作的,其实使用抽象类来进行抽象化操作也是一样的。


这是抽像产品类

 
package com.test;  
  
public abstract class Product {  
  
    public abstract void action1();  
    public abstract void action2();  
} 




以下是抽象产品类的集成实现:

package com.test;  
  
public class ProductA extends Product{  
  
    @Override
    public void action1() {  
        System.out.println("ProductA action1");  
    }
      
    @Override
    public void action2() {  
        System.out.println("ProductA action2");  
    }  
  
    public void myOwnAction(){  
        System.out.println("ProductA myOwnAction");  
    }  
}  
  
  
  
  
package com.test;  
  
public class ProductB extends Product{  
  
    @Override  
    public void action1() {  
        System.out.println("ProductB action1");  
    }  
  
    @Override  
    public void action2() {  
        System.out.println("ProductB action2");  
    }  
  
}

  


抽象工厂类:
package com.test;  
  
public abstract class Factory {  
  
    public abstract Product factory();
}  




产品A对应的工厂类:

package com.test;  
  
public class FactoryA  extends Factory{  
    
    @Override
    public Product factory(){  
        return new ProductA();  
    }  
} 




产品B对应的工厂类:

package com.test;  
  
public class FactoryB extends Factory{  
  
  @Override
    public Product factory(){  
        return new ProductB();  
    }  
} 




最后就是得到产品了:

package com.test;  
  
public class Test {  
  
    public static void main(String args[]){  
          
        Factory fa = new FactoryA();
        Factory fb = new FactoryB();
        
        Product a = fa.factory();  
        Product b = fb.factory();  
          
        a.action1();  
        a.action2();  
          
        b.action1();  
        b.action2();  
    }  
}  




下一节,将对抽象工厂模式进行学习探讨。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值