java设计模式笔记之简单工厂

1.模式结构

简单工厂模式就是有一个工厂类根据传入的变量决定哪一种产品的实例。


工厂类(Creator): 负责创建实例,由客户端调用.
抽象产品(Product):需要创建的产品的共有的父类或者接口.对客户端只暴露这个接口。
具体产品(ConcreteProduct): 工厂类的创建的实际实例,可以有多个,工厂类根据参数决定创建哪一个。


2.源码

Creator:

public class Creator
{
    public static Product factory(String arg)
    {
        return new ConcreteProduct();
    }


}
Product:

public interface Product
{
}

ConcreteProduct:

public class ConcreteProduct implements Product
{
	public ConcreteProduct(){}
}


使用(客户端)client:

public class Client
{
    public static Product factory(String which) throws Exception
    {
        if (which.equalsIgnoreCase("1"))
        {
            return new ConcreteProduct();
        }
        else if (which.equalsIgnoreCase("2"))
        {
            return new ConcreteProduct2();//此类代码中没有给出
        }
        else
        {
         	throw new Exception("request");
        }
    }
}
参数自定义,是返回何种对象的依据,此代码中只是个示例。

3.模式的其他结构

1.Creator可以有多个工厂方法

2.Product 根据情况可以省略,直接在工厂类的返回具体产品类型。不过这种就对客户端暴露了比较多的信息,耦合度较高

3.工厂角色和抽象产品合并,由抽象产品角色担任工厂角色,具体做法是将工厂类的方法(factory())搬移到抽象产品类中,然后去掉工厂类。

4.全部合并,在3的基础上,把方法(factory)搬移到具体产品类中

4.模式优缺点

优点:客户端免去了直接创建产品的责任。实现了对责任的分割。添加产品时,只需要修改工厂类的逻辑,客户端类不用修改,在一定限度实现了开闭原则。
缺点:当产品类有复杂的多层次结构时,工厂类的逻辑会变的复杂,当产品有不同接口时,逻辑会更加难以维护和扩展。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值