原文地址:http://leihuang.org/2014/12/03/simple-factory/
Creational 模式
物件的产生需要消耗系统资源,所以如何有效力的产生、管理 与操作物件,1直都是值得讨论的课题, Creational 模式即与物件的建立相干,在这个分类下的模式给出了1些指点原则及设计的方向。下面罗列到的全属于Creational 模式
- Simple Factory 模式
- Abstract Factory 模式
- Builder 模式
- Factory Method 模式
- Prototype 模式
- Singleton 模式
- Registry of Singleton 模式
简单工厂模式
Simple Factory模式(又称Static Factory模式),简单工厂通过静态方法生产产品,对客户端隐藏产品产生的细节.
假设福克斯电影公司(FoxFilmFactory),能够生产电影(IMovie),而电影有多种,有动作片(ActionMovie),有爱情片(LoveMovie),然后呢,我们观众(AudienceClient)其实不需要知道这些电影具体怎样制造的,我们只需要让电影公司放给我们看.
下面用UML类图来表示它们之间的关系
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⑴2-03 14:51:37
Brave,Happy,Thanksgiving !