简单工厂模式--java实现

前两天去京东终面,叫手写一下单例模式和简单工厂模式。当时学简单工厂模式是在spring的学习中,它是spring采用的主要设计模式,简单工厂模式是类的创建模式。

简单工厂模式是类的创建模式,又叫做静态工厂方法。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。通常它根据自变量的不同返回不同类的实例。

简单工厂模式的实质是由一个工厂类根据传入的参数,动态的决定应该创建出哪一个产品类的实例。
简单工厂模式的构成:‘
(1)工厂类角色: 是简单工厂模式的核心,工厂类在客户端的直接调用下创建产品对象,它往往由一个具体类实现。
(2)抽象产品角色:抽象产品角色由一个借口或者抽象类实现。
(3)具体产品角色:由一个具体类实现。

package com.test.simplefactory;

// 抽象产品角色.  抽象类或者接口

public interface Person
{
    public String sayHello(String name);

    public String sayGoodbye(String name);

}
package com.test.simplefactory;

// 具体产品角色1,需要实现接口
public class Chinese implements Person
{

    @Override
    public String sayHello(String name)
    {
        return name + "你好";
    }

    @Override
    public String sayGoodbye(String name)
    {
        return name + "再见";
    }

}
package com.test.simplefactory;

// 具体产品角色2
public class American implements Person
{

    @Override
    public String sayHello(String name)
    {
        return name + ",hello";
    }

    @Override
    public String sayGoodbye(String name)
    {
        return name + ",goodbye";
    }

}
package com.test.simplefactory;

// 工厂类,作用就是用来生成对象

public class PersonFactory
{
    // 作用是用来生成对象的,所以返回值肯定也是Person类型
    public Person getPerson(String name)
    {
        if ("chinese".equals(name))
        {
            return new Chinese();
        } else if ("american".equals(name))
        {
            return new American();
        } else
        {
            return null;
        }
    }
}

这样,客户端与具体的实现类(Chinese ,American)已经没有强耦合的关系了。我们的请求是像工厂发出的,我们需要的产品也是工厂帮助我们生成的。

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