设计模式:简单工厂模式

简单工厂模式是一种创建型设计模式,它提供了一个静态方法,用于根据客户端的需求创建相应的产品,如动作片和爱情片。该模式隐藏了产品的创建过程,使客户端可以更方便地使用产品。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:http://leihuang.org/2014/12/03/simple-factory/

Creational 模式

物件的产生需要消耗系统资源,所以如何有效率的产生、管理 与操作物件,一直都是值得讨论的课题, Creational 模式即与物件的建立相关,在这个分类下的模式给出了一些指导原则及设计的方向。下面列举到的全属于Creational 模式


简单工厂模式

Simple Factory模式(又称Static Factory模式),简单工厂通过静态方法生产产品,对客户端隐藏产品产生的细节.

假如福克斯电影公司(FoxFilmFactory),能够生产电影(IMovie),而电影有多种,有动作片(ActionMovie),有爱情片(LoveMovie),然后呢,我们观众(AudienceClient)并不需要知道这些电影具体怎么制造的,我们只需要让电影公司放给我们看.

下面用UML类图来表示它们之间的关系

img

IMovie 接口

package org.leihuang.simplefactory;
public interface IMovie {
    public void play() ;
}


ActionMovie类

package org.leihuang.simplefactory;

public class ActionMovie implements IMovie {
    @Override
    public void play() {
        System.out.println("哼哼哈兮!");
    }
}


LoveMovie 类

package org.leihuang.simplefactory;

public class LoveMovie implements IMovie{

    @Override
    public void play() {
        System.out.println("爱老虎油!");
    }

}


FoxFilmFactory 类

package org.leihuang.simplefactory;

public class FoxFilmFactory {
    public static IMovie createMovie(String name)
            throws InstantiationException, IllegalAccessException,
            ClassNotFoundException {
        return (IMovie) Class.forName(name).newInstance();
    }
}


AudienceClient 类

package org.leihuang.simplefactory;

public class AudienceClient {
    public static void main(String[] args) throws InstantiationException,
            IllegalAccessException, ClassNotFoundException {
        FoxFilmFactory.createMovie("org.leihuang.simplefactory.LoveMovie").play() ;
        FoxFilmFactory.createMovie("org.leihuang.simplefactory.ActionMovie").play() ;
    }
}


从上面我们可以看出,观众不需要知道电影具体是怎么生产的,只需要告诉fox我们要看什么电影,然后fox就会去给你生产,然后你只管看.


2014-12-03 14:51:37

Brave,Happy,Thanksgiving !


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值