Java设计模式----工厂模式(一)

工厂模式也是是最常用的设计模式之一,工厂模式一般分为简单工厂、工厂、抽象工厂三种情况,所以分三部分来整理:第一部分总结简单工厂、第二部分总结工厂,第三部分总结抽象工厂。

  • 简单工厂模式的概念
  • 工厂模式的好处
  • 简单工厂模式的类图
  • 简单工厂模式的实现

简单工厂模式的概念

工厂模式概念: 我们最常用的一种实例化对象模式,是用工厂方法代替new操作的一种模式。把对象的创建放到一个工厂类中,通过参数来创建不同的对象。 工厂用来生产产品,有两个关键角色:产品和工厂。工厂模式的关键点在于如何描述好两个角色之间的关系。

工厂模式的优点

带来的好处:

在软件系统中,经常面临“一系列相互依赖的对象”的创建工作,为了绕过常规对象的创建方式(即用new创建),利用工厂模式,提供一种“封装机制”来减少功能调用程序和“多系列具体对象创建工作”的耦合性。

1、把对象的创建集中在一个地方(工厂中),在增加新的对象类型的时候,只需要改变工厂方法;、;否则在应用中四处散布对象创建逻辑,如果创建方法改变时则需要四处修改,维护量增加。

2、应用的场合是新的对象类型很可能经常被添加进来。

简单工厂模式的类图

这里写图片描述

简单工厂模式的实现

实现步骤

1、定制抽象产品接口,如ICar
2、定制其具体子类,如类TopCar(高档车)、MidCar(中档车)、LowCar(低档车)
3、定制工厂类,如CarSimpleFactory,是一个具体的类,非接口或者抽象类,提供一个create()方法,利用分支结构创建所需产品

//定义小汽车接口:ICar.java
public interface ICar{
    //由于工厂模式仅关系对象的创建,为说明方便,无需定义方法
}

//下面定义高、中、低档具体的小汽车
//高档汽车:TopCar.java
public class TopCar implements ICar {

}
//中档汽车:MidCar.java
public class MidCar implements ICar {

}
//低档汽车:LowCar.java
public class LowCar implements ICar {

}

//简单工厂:CarSimpleFactory.java
public class CarSimpleFactory {

    public static final String TOPTYPE = "toptype";
    public static final String MIDTYPE = "midtype";
    public static final String LOWTYPE = "lowtype";

    public static ICar create (String mark){
        ICar obj = null;
        if (mark == TOPTYPE){   //如果是高档类型
            obj = new TopCar(); //则创建高档汽车
        }
        else if (mark == MIDTYPE){
            obj = new MidCar();
        }
        else if (mark == LOWTYPE){
            obj = new LowCar();
        }
        return obj;

    }
}

//测试程序:CarTest.java
public class CarTest {
    public static void main(String[] args) {
        ICar obj = CarSimpleFactory.create("topcar");
    }
}

创建简单工厂的时候,通常不用创建简单工厂的类实例,没有创建的必要。因此可以把简单工厂类实现成一个工具类,直接使用静态方法就可以啦。也就是说,简单工厂方法通常是静态的,所以也被称为静态工厂。

如果现在又新增了 一个超高档次的汽车,在简单工厂模式下,需要做的工作有:
1、新增ICar的实现类SuperCar
2、修改CarSimpleFactory中的create()方法,增加SuperCar的选择分支
比较麻烦。。。。。。。。。
新增SuperCar类是必然的,能否不修改工厂类就能完成所需功能?????
请看:Java设计模式—-工厂模式(二)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值