龙空技术网

设计模式:创建类之FactoryMethod(工厂方法)模式应用场景和示例

传新视界 245

前言:

今天大家对“java简单工厂模式应用场景”都比较注意,大家都需要知道一些“java简单工厂模式应用场景”的相关文章。那么小编同时在网摘上汇集了一些关于“java简单工厂模式应用场景””的相关内容,希望大家能喜欢,朋友们一起来学习一下吧!

导引

关于设计模式,本头条号@牛旦教育IT课堂

设计模式:总体构成概览图及6六大模式原则

设计模式:来看看单例模式(Singleton)的7种实现方式

设计模式:创建类型之原型模式Prototype意图与示例

设计模式:创建类之构建者模式(Builder)应用场景和示例

设计模式:结构型模式之代理模式Java实现

各位同学,需要的可以向前翻阅。接下来,我们一起看看本次主体,工厂方法模式的相关意图场景和应用代码示例。

模式意图

工厂方法在MVC中应用的很广泛。

工厂方法意在分离产品与创建的两个层次,使用户在一个工厂池中可以选择自己想要使用的产品,而忽略其创建过程。

简单来说,就像一个大型的工厂,对于消费者来说,只需要知道都有什么工厂的产品生产出来,而不需要关心工厂是如何生产产品的。对于工厂来说,必须知道所有的产品的制造方法。

模式结构

Creator 创建工厂的接口

ConcreteCreator 具体的产品创建者

Product 产品的接口

ConcreteProduct 具体的产品

适合场景

1 当一个类不知道它所必须创建的对象的类的时候。

2 当一个类希望由他的子类来制定它所创建的对象的时候

3 当类创建对象的职责委托给多个帮助子类中的某一个,并且希望进行一些信息的局部初始化的时候。

代码结构

工厂方法需要一个工厂接口,提供了基本的类模式,和一个产品接口,提供基本的方法。

1 interface Creator{2 public Product factory();3 }4 interface Product{5 public void Say();6 }

接下来就是具体的工厂方法,可以创建不同的产品。

 1 class ConcreteCreator1 implements Creator{ 2 public Product factory() { 3 return new ConcreteProduct1(); 4 } 5 } 6 class ConcreteCreator2 implements Creator{ 7 public Product factory() { 8 return new ConcreteProduct2(); 9 }10 }

其次需要不同的产品。

 1 class ConcreteProduct1 implements Product{ 2 public void Say() { 3 System.out.println("ConcreteProduct1"); 4 } 5 } 6 class ConcreteProduct2 implements Product{ 7 public void Say() { 8 System.out.println("ConcreteProduct2"); 9 }10 }

使用方法,大致如下

 1 public class test { 2 public static Creator creator1,creator2; 3 public static Product product1,product2; 4 public static void main(String[] args){ 5 creator1 = new ConcreteCreator1(); 6 creator2 = new ConcreteCreator2(); 7  8 product1 = creator1.factory(); 9 product2 = creator2.factory();10 11 product1.Say();12 product2.Say();13 }14 }
生活中的设计模式

目前的生活,是一种快餐的生活。有时候不想做饭,去饭店也不爱等,那么肯德基、麦当劳、德克士就成为了一种相对方便的方式。

我们去肯德基,通常会吃点汉堡,点点可乐,不关心这些东西是怎么做出来的,直接点,拿到吃,简单方便,这就是生活中的快餐工厂。

通过一个MakeChoice方法,可以统一的进行选择。

interface KFC { public Client working();}interface Client { public void eating();}class Bread_Menu implements KFC { public Client working() { return new Client_Bread(); }}class Cola_Menu implements KFC { public Client working() { return new Client_Cola(); }}class Client_Bread implements Client { public void eating() { System.out.println("顾客 吃汉堡"); }}class Client_Cola implements Client { public void eating() { System.out.println("顾客 喝可乐"); }}public class FactoryMethodTest { public static KFC waiter; public static Client client1,client2;  public static KFC MakeChoice(KFC maker){ if(maker instanceof Bread_Menu){ return new Bread_Menu();  }else{ return new Cola_Menu(); } }  public static void main(String[] args){  System.out.println("-------------想吃汉堡-----------------"); waiter = MakeChoice(new Bread_Menu()); client1= waiter.working(); client1.eating();  System.out.println("-------------想喝可乐-----------------"); waiter = MakeChoice(new Cola_Menu()); client2 = waiter.working(); client2.eating(); }}

执行如下

-------------想吃汉堡-----------------顾客 吃面包-------------想喝可乐-----------------顾客 喝可乐
总结

示例比较简单,主要是为了简单通过代码描述工厂模式的一般用法。在具体的业务中,要根究工厂方法的意图、场景和应用结构,进行合理的构建设计。

关于工程方法就简单说这些了,希望能对你的技术学习和成长过程有点帮助。^_^

标签: #java简单工厂模式应用场景