Method Factory Pattern
工厂方法模式
工厂模式总共有三种
简单工厂模式
工厂方法模式
抽象工厂模式
我们先不说怎么分他们,我们先说问题!
还拿水果工厂来说,以前科技不发达,苹果就是苹果,橘子就是橘子,现在不行了,苹果的种类变多了,又是红富士,又是蓝富士的,反正不管叫啥,苹果下面有一堆各式各样的苹果了,如果我们还使用简单工厂模式的话,我们需要写一大堆if...else...判断,这样一个工厂处理的事情就太多了,不是我们希望的!
解决方法
开分厂是不错的选择,水果工厂是总部,开了俩家分工厂,一个是苹果工厂,一个是橘子工厂,分别负责生产各式各样的苹果和橘子,这样就界限分明多了。用户想要红富士,就是苹果工厂要呗!水果工厂就省心了。
package com.pattern.methodfactory; /** * 水果工厂是总部,下面可以开若干个分厂 */ public interface FruitFactory { public Fruit createFruit(String name); }
package com.pattern.methodfactory; /** * 水果接口 */ public interface Fruit { public void sayName(); }
package com.pattern.methodfactory; /** * 苹果工厂,负责生产各种苹果 */ public class AppleFactory implements FruitFactory{ @Override public Fruit createFruit(String name) { if(name==null){ return null; }else if(name.equalsIgnoreCase("redApple")){ return new RedApple(); }else if(name.equalsIgnoreCase("blueApple")){ return new BlueApple(); } return null; } }
package com.pattern.methodfactory; //红苹果 public class RedApple implements Fruit { @Override public void sayName() { System.out.println("RedApple..."); } }
package com.pattern.methodfactory; //蓝苹果 public class BlueApple implements Fruit { @Override public void sayName() { System.out.println("BlueApple..."); } }
package com.pattern.methodfactory; public class Test { public static void main(String[] args) { RedApple redApple=(RedApple) new AppleFactory().createFruit("redApple"); BlueApple blueApple=(BlueApple) new AppleFactory().createFruit("blueApple"); redApple.sayName();//RedApple... blueApple.sayName();//BlueApple... } }
到底方法工厂与简单工厂怎么区分呢,咱们可以简单地这样理解:
方法工厂中的工厂有多个,也就是说他们实现了总工厂,通过分厂获取对象只能通过构造方法即工厂的实例来创建我们需要的产品,这就是工厂方法模式。
相关推荐
今天我们要探讨的是设计模式中的一个经典成员——工厂方法模式(Factory Method Pattern)。工厂方法模式是创建型设计模式的一种,它提供了一种创建对象的最佳方式。 ### 一、什么是工厂方法模式? 工厂方法模式...
1. **创建型模式**(Creational Patterns):这类模式主要关注对象的创建过程,包括单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式...
2. **工厂方法模式(Factory Method Pattern)**: - 工厂方法模式将对象的创建委托给子类。在抽象工厂类中定义一个创建产品的方法,但不实现,而是由具体的子类去实现。这样,当需要创建新产品时,只需要添加新的...
5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式FACADE PATTERN 8、适配器模式ADAPTER PATTERN 9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER ...
学习Java中的工厂方法模式,探索示例、用途、好处以及它如何增强代码的灵活性和可维护性。 **二、别名** * Virtual Constructor **三、Factory Method设计模式的意图** 使用工厂方法模式定义一个用于创建对象的...
工厂方法模式(Factory Method Pattern)是面向对象的设计模式,它定义了一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。这样,工厂方法将实例化操作推迟到子类中,实现了对类的抽象,提高了代码的...
Factory Method Pattern 工厂三兄弟之工厂方法模式(一) 工厂三兄弟之工厂方法模式(二) 工厂三兄弟之工厂方法模式(三) 工厂三兄弟之工厂方法模式(四) 抽象工厂模式-Abstract Factory Pattern 工厂三兄弟之...
2. **工厂方法模式(Factory Method Pattern)**:定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法让类的实例化推迟到子类。 3. **抽象工厂模式(Abstract Factory Pattern)**:提供一个创建一系列...
11. 模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。在Java的`java.io.InputStream`和`java.io.OutputStream`中,`read()`和`write()`方法是模板方法。 12. 观察...
16. **模板方法模式(Template Method Pattern)**:在抽象类中定义了一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 17. **状态模式(State...
接着,我们来到工厂方法模式(Factory Method Pattern)。与简单工厂模式相比,它将对象的创建延迟到子类,通过定义一个创建对象的接口,但让实现这个接口的具体类决定实例化哪一个类。这样,工厂方法模式使得系统...
在软件设计模式中,工厂方法模式(Factory Method Pattern)和抽象工厂模式(Abstract Factory Pattern)是两种常用的创建型设计模式,它们都属于“工厂”家族,但有着不同的应用场景和目标。 工厂方法模式的核心...
1. **模式定义**:工厂方法模式(Factory Method Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂方法模式中,每个创建对象的工厂类都提供了专门的工厂方法用于创建对象,客户端调用这个...
2. 工厂方法模式(Factory Method Pattern):属于多态性设计模式,定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法让类的实例化推迟到子类。 3. 抽象工厂模式(Abstract Factory Pattern):提供...
创建型模式关注对象的创建,如单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。这些模式帮助我们控制实例化过程,使代码更具灵活性和可扩展性。 结构型模式涉及到如何组合类和对象...
工厂方法模式【FACTORY METHOD PATTERN】 抽象工厂模式【ABSTRACT FACTORY PATTERN】 门面模式【FACADE PATTERN】 适配器模式【ADAPTER PATTERN】 模板方法模式【TEMPLATE METHOD PATTERN】 建造...
(3)具体产品(Concrete Product)角色:工厂方法模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体的Java类实现。 2.3 简单工厂模式的优缺点 简单工厂模式的优点如下: (1)工厂类含有必要的...
1. 模板方法模式(Template Method Pattern):在一个方法中定义一个算法的骨架,将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。 2. 中介者模式...
2. **工厂方法模式(Factory Method Pattern)**: - 它将实例化的责任委托给子类,每个子类对应一个具体的产品。工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类的实例化...