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


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

简单工厂模式的  UML 图:

(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();
    }
}

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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM