工厂模式

来源:互联网 发布:淘宝店铺美工接单 编辑:程序博客网 时间:2024/06/11 03:57
简单工厂模式:
工厂模式是我们最常用的实例化对象模式。面向对象的封装(Encapsulation)和分派(Delegation)告诉我们,尽量将长的代码分派“切割”成每段,将每段再“封装”起来(减少段和段之间耦合联系性),这样,就会将风险分散,以后如果需要修改,只要更改每段,不会再发生牵一动百的事情。
定义一个接口ISample,创建一个工厂类Factory创造实现类SampleA
一、创建一个专门生成实例的类
public class Factory{
public static ISample creator(int which){
if (which==1)
return new SampleA();
else if (which==2)
return new SampleB();
}
}


那么在你的程序中,如果要创建ISample的实列时候可以使用
iSample sampleA=Factory.creator(1);




工厂模式主要是为创建对象提供了接口。工厂模式照《Java与模式》中的提法分为三类: 
1. 简单工厂模式(Simple Factory) 
2. 工厂方法模式(Factory Method) 
3. 抽象工厂模式(Abstract Factory) 
这种模式从上到下逐步抽象,并且更具一般性。还有一种分类法,就是将简单工厂模式看为工厂方法模式的一种特例,两个归为一类。下面是使用工厂模式的两种情况: 
1.在编码时不能预见需要创建哪种类的实例。 
2.系统不应依赖于产品类实例如何被创建、组合和表达的细节 




、简单工厂模式 
顾名思义,这个模式本身很简单,而且使用在业务较简单的情况下。 
它由种角色组成(关系见下面的类图: 
1、工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。 
2、抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。 
3、具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。 
那么简单工厂模式怎么用呢?我来举个例子吧,我想这个比讲一大段理论上的文字描述要容易理解的多!下面就来给那个暴发户治病: P 
在使用了简单工厂模式后,现在暴发户只需要坐在车里对司机说句:"开车"就可以了。来看看怎么实现的: 
//抽象产品角色 
public interface Car{ 
public void drive(); 

//具体产品角色 
public class Benz implements Car{ 
public void drive() { 
System.out.println("Driving Benz "); 


public class Bmw implements Car{ 
public void drive() { 
System.out.println("Driving Bmw "); 


。。。(奥迪我就不写了:P) 
//工厂类角色 
public class Driver{ 
//工厂方法 
//注意 返回类型为抽象产品角色 
public static Car driverCar(String s)throws Exception { 
//判断逻辑,返回具体的产品角色给Client 
if(s.equalsIgnoreCase("Benz")) return new Benz(); 
else if(s.equalsIgnoreCase("Bmw")) 
return new Bmw(); 
...... 
else throw new Exception(); 
。。。 
//欢迎暴发户出场...... 
public class Magnate{ 
public static void main(String[] args){ 
try{ 
//告诉司机我今天坐奔驰 
Car car = Driver.driverCar("benz"); 
//下命令:开车 
car.drive(); 















0 0
原创粉丝点击