国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php框架 > 框架设计 > 设计模式:简单工厂模式

设计模式:简单工厂模式

来源:程序员人生   发布时间:2015-01-16 08:59:15 阅读次数:3076次

原文地址: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类图来表示它们之间的关系

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⑴2-03 14:51:37

Brave,Happy,Thanksgiving !


生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生