码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-05-03 17:28:00      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

简单工厂模式(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();
    }
}

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

 

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

标签:

原文地址:http://www.cnblogs.com/liweipower2015/p/4474203.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!