简单工厂模式--java实现

来源:互联网 发布:java base64解码utf8 编辑:程序博客网 时间:2024/05/21 07:47

前两天去京东终面,叫手写一下单例模式和简单工厂模式。当时学简单工厂模式是在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;// 具体产品角色2public 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)已经没有强耦合的关系了。我们的请求是像工厂发出的,我们需要的产品也是工厂帮助我们生成的。

0 0