Factory Method Pattern(工厂方法模式)——莫勇鹏老师

Factory Method Pattern(工厂方法模式)

在工厂方法模式中,父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成,即由子类来决定究竟应该实例化(创建)哪一个类。

 

工厂方法模式的UML类图

 

Product:产品角色

定义产品的接口。

 

ConcreteProduct:真实的产品

实现接口Product类。

 

Creator:工厂角色

声明工厂方法(FactoryMethod),返回一个产品。

 

ConcreteCreator:真实的工厂

实现FactoryMethod工厂方法,由客户调用,返回一个产品的实例。

 

Java实例——扩展了的手机工厂

 

手机接口:

public interface Mobile {

       public voidcall();

}

 

手机工厂接口:

public interface MobileFactory {

       public MobileproduceMobile();

}

 

摩托罗拉手机实现手机接口:

public class Motorola implements Mobile{

 

       @Override

       public void call(){

              // TODO Auto-generated method stub

              System.out.println("摩托罗拉手机");

       }

 

}

 

诺基亚手机实现手机接口:

public class Nokia implements Mobile{

 

       @Override

       public void call(){

              // TODO Auto-generated method stub

              System.out.println("诺基亚手机");

       }

 

}

摩托罗拉工厂实现了生产手机的方法,返回摩托罗拉手机:

public class MotorolaFactory implementsMobileFactory{

 

       @Override

       public Mobile produceMobile() {

              // TODO Auto-generated method stub

              System.out.print("摩托罗拉工厂制造了");

              return new Motorola();

       }

 

}

 

诺基亚工厂实现了生产手机的方法,返回诺基亚手机:

public class NokiaFactory implementsMobileFactory{

 

       @Override

       public Mobile produceMobile() {

              // TODO Auto-generated method stub

              System.out.print("诺基亚工厂制造了");

              return new Nokia();

       }

 

}

 

客户程序:

public class Client {

       public static voidmain(String args[]){

              MobileFactory mf;

              Mobile m;

              mf=newMotorolaFactory();

              m=mf.produceMobile();

              m.call();

              mf=newNokiaFactory();

              m=mf.produceMobile();

              m.call();

       }

}

 

输出结果:

摩托罗拉工厂制造了摩托罗拉手机

诺基亚工厂制造了诺基亚手机

 

应用情景:

1.      类不知道自己要创建哪一个对象。

2.      类用它的子类来指定创建哪个对象。

3.      客户需要清楚创建了哪一个对象。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值