浅析Java设计模式——工厂模式(1)

浅析Java设计模式——工厂模式(一)

在设计模式中,工厂模式有三种形式:简单工厂模式、工厂方法模式、抽象工厂模式。三种形式核心的角色都是工厂类。

简单工厂模式

1、定义:简单工厂模式又叫静态工厂方法模式,它根据传入的参数返回所需要的对象,而不需要知道具体类的名字。

2、模式结构:(包含以下角色)

(1)Factory(工厂角色):模式的核心类,提供静态工厂方法,用于创建产品对象。

(2)Product(抽象产品角色):所有具体产品类的父类,提供公共的接口。

(3)ConcreteProduct(具体产品角色):继承抽象产品角色,实现其抽象方法。

3、案例分析:(电视机厂商生产不同品牌的电视)

(1)抽象产品类 TV

public interface TV
{
    public void play();
}

(2)具体产品类 HaierTV

public class HaierTV implements TV
{
    public void play()
    {
        System.out.println("海尔电视机播放中。。。");
    }
}

(3)具体产品类 MiTV

public class MiTV implements TV
{
    public void play()
    {
        System.out.println("小米电视机播放中。。。");
    }
}

(4)工厂类 TVFactory

    public class TVFactory  
    {  
        //静态工厂方法:根据传入电视品牌参数生产电视  
        public static TV produceTV(String brand)  
        {  
            if(brand.equalsIgnoreCase("Haier"))  
            {  
                System.out.println("Haier电视机生产中。。。");  
                return new HaierTV();  
            }   
            else if(brand.equalsIgnoreCase("Mi"))  
            {  

                System.out.println("小米电视机生产中。。。");  
                return new MiTV();  
          }  
       }  
    }        

4、模式优缺点:

(1)优点:对象的创建和对象的使用分离,对象的创建由专门的工厂类完成。

(2)缺点:工厂类包含了所有产品的创建逻辑,一旦出现问题,整个系统将不能工作;产品数量太多会导致工厂类过于复杂,不利于系统的扩展和维护;静态工厂方法使得工厂类不能很好地利用继承的特性。

5、模式应用:

在 JDK 类库中的工具类 java.text.DateFormat 中,DateFormat 类提供了一个 getDateInstance( ) 方法(静态工厂方法),用于格式化本地日期,它有三个重载的方法:

public final static DateFormat getDateInstance();
public final static DateFormat getDateInstance(int style);
public final static DateFormat getDateInstance(int style,Locale locale);

你可能感兴趣的:(浅析Java设计模式)