博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java设计模式--工厂方法模式
阅读量:6937 次
发布时间:2019-06-27

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

角色

抽象工厂:担任这个角色是工厂方法模式的核心,它是与应用程序无关的。任何在模式中创建对象的工厂类都必须实现这个接口。

具体工厂:担任这个角色的是实现了抽象工厂接口的具体Java类。具体工厂角色含有与应用密切相关的逻辑,并且受到应用程序的调用来创建产品对象。

抽象产品:工厂方法模式所创建对象的超类型,也就是产品对象的共同父类或接口。

具体产品:这个角色实现了抽象产品接口。

结构图

 

 抽象工厂:

package com.design.factorymethod;public interface Factory {    Product createProduct();}

 

抽象产品:

package com.design.factorymethod;public interface Product {    void productInfo();}

 

具体产品:

package com.design.factorymethod;public class ProductA implements Product {    @Override    public void productInfo() {        System.out.println("Product A");    }}
package com.design.factorymethod;public class ProductB implements Product {    @Override    public void productInfo() {        System.out.println("Product B");    }}

 

具体工厂:

package com.design.factorymethod;public class FactoryA implements Factory {    @Override    public Product createProduct() {        return new ProductA();    }}
package com.design.factorymethod;public class FactoryB implements Factory {    @Override    public Product createProduct() {        return new ProductB();    }}

 

测试:

package com.design.factorymethod;public class Client {    private static Factory factoryA, factoryB;    private static Product productA, productB;    public static void main(String[] args){        factoryA = new FactoryA();        factoryB = new FactoryB();        productA = factoryA.createProduct();        productB = factoryB.createProduct();        productA.productInfo();        productB.productInfo();    }}

 

输出:

 

工厂方法模式和简单工厂模式的区别:工厂方法模式的核心是一个抽象工厂类,而简单工厂模式的核心是一个具体类

转载于:https://www.cnblogs.com/LUA123/p/7794956.html

你可能感兴趣的文章
CSS3 学习+实践(三)
查看>>
hadoop集群搭建
查看>>
基于UDP的IO多路复用一例
查看>>
海量数据处理专题(九)——外排序
查看>>
解决sqlplus的segmentation fault或hang问题
查看>>
企业搜索引擎开发之连接器connector(八)
查看>>
win8下Python学习——搭建web.py框架
查看>>
自动清理手机文件方法
查看>>
【工具类】NetWorkHelper
查看>>
Spring MVC 教程,快速入门,深入分析(转载)
查看>>
财经法规与会计职业道德4
查看>>
php 杂记
查看>>
单元测试同时支持 NUnit/MSTest
查看>>
沟通至上 《高效程序员的45个习惯》读书笔记
查看>>
解决Android中无法搜索联系人的问题
查看>>
使用网站作为WCF服务宿主的几种做法
查看>>
2013ACM多校联合(2)
查看>>
zoom.js:一款效果很独特的页面内容缩放插件
查看>>
GateWay程序分析01_主程序分析
查看>>
POJ 1328
查看>>