博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Factory Method Pattern(工厂方法模式)——莫勇鹏老师
阅读量:6257 次
发布时间:2019-06-22

本文共 1525 字,大约阅读时间需要 5 分钟。

hot3.png

Factory Method Pattern(工厂方法模式)

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

 

工厂方法模式的UML类图

 

Product:产品角色

定义产品的接口。

 

ConcreteProduct:真实的产品

实现接口Product类。

 

Creator:工厂角色

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

 

ConcreteCreator:真实的工厂

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

 

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

 

手机接口:

public interface Mobile {

       public void call();

}

 

手机工厂接口:

public interface MobileFactory {

       public Mobile produceMobile();

}

 

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

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 implements MobileFactory{

 

       @Override

       public Mobile produceMobile() {

              // TODO Auto-generated method stub

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

              return new Motorola();

       }

 

}

 

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

public class NokiaFactory implements MobileFactory{

 

       @Override

       public Mobile produceMobile() {

              // TODO Auto-generated method stub

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

              return new Nokia();

       }

 

}

 

客户程序:

public class Client {

       public static void main(String args[]){

              MobileFactory mf;

              Mobile m;

              mf=new MotorolaFactory();

              m=mf.produceMobile();

              m.call();

              mf=new NokiaFactory();

              m=mf.produceMobile();

              m.call();

       }

}

 

输出结果:

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

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

 

应用情景:

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

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

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

转载于:https://my.oschina.net/mondchan/blog/41371

你可能感兴趣的文章
Sphinx学习笔记(一)
查看>>
使用jmeter 做个简单的接口测试
查看>>
CSS对浏览器的兼容性(IE和Firefox)技巧整理
查看>>
Poj 2388 Who's in the Middle
查看>>
springboot与redis
查看>>
关于python文件操作
查看>>
读《Cassandra权威指南》
查看>>
Xmanager连接linux
查看>>
Android开发教程 --- 数据存储 SQLite
查看>>
js 继承
查看>>
Lambda表达式现状分析
查看>>
20172304 2017-2018-2 《程序设计与数据结构》第十周学习总结
查看>>
表单提交数据get请求和post请求的区别
查看>>
快速沃尔什变换 FWT
查看>>
抽取JS下拉框函数
查看>>
Python练习,网络小爬虫(初级)
查看>>
wireshark如何抓取别人电脑的数据包
查看>>
Spring简单实现数据源的动态切换
查看>>
Django返回json给钱前台的方法
查看>>
一、使用官方工具建立空springboot
查看>>