Java 设计模式之 简单工厂模式(静态工厂方法模式)

简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类(或者父接口)

简单工厂模式的  UML 图:

Java 设计模式之 简单工厂模式(静态工厂方法模式)

(1)抽象(Product)产品角色:简单工厂模式所创建的所有对象的父类,注意,这里的父类可以是接口也可以是抽象类,它负责描述所有实例所共有的公共接口。

(2)具体产品(Concrete Product)角色:简单工厂所创建的具体实例对象,这些具体的产品往往都拥有共同的父类。

(3)工厂角色(Creator):这是简单工厂模式的核心,由它负责创建所有的类的内部逻辑。当然工厂类必须能够被外界调用,创建所需要的产品对象。

代码:

(1)抽象产品角色:

package com.liwei.factory.simple;

/**

 * 抽象(Product)产品角色

 * 负责描述所有实例的公共接口

 * @author Administrator

 *

 */

public interface Doll {

    public void getInfo();

}

(2)具体产品角色

package com.liwei.factory.simple;



public class BarbieDoll implements Doll {



    @Override

    public void getInfo() {

        System.out.println("我是芭比娃娃");

    }



}
package com.liwei.factory.simple;



public class ClothDoll implements Doll {



    @Override

    public void getInfo() {

        System.out.println("我是布娃娃");

    }



}

(3)工厂角色:

package com.liwei.factory.simple;



public class DollFactory {

    public static Doll getInstance(String name){

        if("barbie".equals(name)){

            return new BarbieDoll();

        }else if("cloth".equals(name)){

            return new ClothDoll();

        }else{

            return null;

        }

    }

}

(4)测试类:

package com.liwei.factory.simple;



public class Client {

    public static void main(String[] args) {

        Doll doll1 = DollFactory.getInstance("cloth");

        doll1.getInfo();

        Doll doll2 = DollFactory.getInstance("barbie");

        doll2.getInfo();

    }

}

由原来的直接依赖,变为依赖工厂了。只是把依赖关系转移了。

 

你可能感兴趣的:(java 设计模式)