1. 简单工厂模式
简单工厂其实不是一个设计模式,反而比较像是一种编程习惯。
我的理解:简单工厂模式只是把类实例化的方法【new()】放在了工厂类中
example:定义一个简单汽车工厂,根据客户的不同需要,生产不同的汽车。
来吧
1.定义一个汽车的接口,有一个基本的行为方法:即车是可以开的居然
public interface ICar { //car 的行为 void driver(); }
2. 定义一个简单工厂,注意哟,这是重点。根据客户的不同需要,生产不同的汽车
public class SimpleFactory { //创建汽车的方法 public ICar createVehicle(String type){ ICar car = null; if("BMW".equals(type)){ car = new BMWCar(); }else if("QQ".equals(type)){ car = new QQCar(); } return car; } }
3. 定义一个宝马车
/** * 宝马车 * */ public class BMWCar implements ICar { public void driver() { System.out.println("宝马车在开啊。。。。"); } }
4. 定义一个奇瑞QQ专门为屌丝服务
/** * 奇瑞QQ * */ public class QQCar implements ICar{ public void driver() { System.out.println("QQ车在开啊。。。。"); } }
5. 都准备好了,再来一个专卖店吧,专门倾听客户声音为客户服务
/** * 售车店 * */ public class CarStore { private SimpleFactory factory;//这也是重点啊。 public CarStore(SimpleFactory factory) { this.factory = factory; } //我需要一辆车 public ICar orderVehicle(String type){ return factory.createVehicle(type); } }
6.运行看看
public class Main { public static void main(String[] args) { //定义一个工厂方法 SimpleFactory factory = new SimpleFactory(); //定义一个商店 CarStore carStore = new CarStore(factory); //来一辆宝马吧 ICar bmw = carStore.orderVehicle("BMW"); bmw.driver(); //我没钱来一辆QQ吧 ICar qq = carStore.orderVehicle("QQ"); qq.driver(); } }
以上是我理解的最简单工厂模式。
所有工厂模式都是用来封装对象的创建。
2. 抽象工厂模式
抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类。
看例子吧
1. 抽象工厂方法
/** * 抽象工厂的方法 */ public abstract class AbstractFactory { //生产Vehicle的方法 abstract ICar createVehicle(String type); //生产airplane的方法 abstract IAirplane createAirplane(String type); }
2. 定义一个车的接口
/** * 汽车接口 */ public interface ICar { public void driver(); }3.定义一辆宝马车
public class BMWCar implements ICar{ @Override public void driver() { System.out.println("宝马车在开啊。。。。"); } }4.定义一个QQ
/** * 奇瑞QQ */ public class QQCar implements ICar{ @Override public void driver() { System.out.println("QQ在开。"); } }5.定义一个飞机的接口
/** * 飞机接口 */ public interface IAirplane{ public void fly(); }6. 定义一架空军一号
/** * 空军一号 */ public class AirForceOne implements IAirplane{ @Override public void fly() { System.out.println("灰太狼的空军一号。。。"); } }7. 定义一个747
/** * 747 */ public class Airbus747 implements IAirplane{ @Override public void fly() { System.out.println("747在飞啊。"); } }8.定义一个低级工厂,继承自抽象工厂,可以生产QQ和747
/** * 低级工厂 */ public class LowLevelFactory extends AbstractFactory{ //只能生产QQ ICar createVehicle() { return new QQCar(); } //只能生产747 IAirplane createAirplane() { return new Airbus747(); } }
9.定义一个高级工厂,继承自抽象工厂,可以生产bm和空车一号
/** * 高级工厂 */ public class HighLevelFactory extends AbstractFactory{ //可以生产bm ICar createVehicle() { return new BMWCar(); } //可以生产空军一号 IAirplane createAirplane() { return new AirForceOne(); } }
10.运行一下
public class Main { public static void main(String[] args) { //高级工厂 AbstractFactory hignFactory = new HighLevelFactory(); ICar bmw = hignFactory.createVehicle(); bmw.driver(); IAirplane airplane747 = hignFactory.createAirplane(); airplane747.fly(); //低级工厂 AbstractFactory lowFactory = new LowLevelFactory(); ICar qq = lowFactory.createVehicle(); qq.driver(); IAirplane airone = lowFactory.createAirplane(); airone.fly(); } }
我的理解:抽象工厂模式应该是有一个抽象工厂类,并且有许多继承的子工厂类。每一个类产品比方说,车,飞机,都有一个公共的接口。不同的子工厂可以组合生产不同的产品。
相关推荐
Python 114.设计模式_工厂模式实现.mp4
java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...
工厂模式是软件设计模式中的核心模式之一,它在软件开发中扮演着重要的角色,特别是在需要创建一系列相关或相互依赖的对象时。工厂模式的主要目的是将对象的创建过程封装起来,使得客户端在使用对象时,无需关心对象...
【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种...
抽象工厂模式是一种设计模式,属于创建型模式,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定...在实际开发中,尤其是在需要支持多种类似产品或服务的场景下,抽象工厂模式是非常重要的设计模式之一。
工厂方法模式是设计模式中的创建型模式之一,它在软件工程中扮演着非常重要的角色,尤其是在C#这样的面向对象编程语言中。工厂方法模式提供了一种封装对象创建过程的方法,使得具体的创建过程延迟到子类中进行,从而...
"设计模式之工厂系列"指的是几种不同的工厂模式,它们都是面向对象设计中的重要组成部分,尤其在Java编程语言中广泛使用。工厂模式的主要目标是提供一个创建对象的抽象接口,使得系统在不指定具体实现类的情况下,...
3. **抽象工厂模式**: 抽象工厂模式是工厂方法模式的扩展,它提供了创建相关或依赖对象的家族,而无需指定它们的具体类。在教研室购买电脑的场景下,如果考虑更复杂的因素,比如操作系统(Windows、MacOS),那么...
《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...
设计模式_源代码大全.zip 包括:1.简单工厂模式 2.策略模式 3.装饰模式 4.代理模式 5.工厂方法模式 6.原型模式 7.模板方法模型 8.外观模式 9.建造者模式 10.观察者模式 11.抽象工厂模式 12.状态模式 13.适配器模式 ...
工厂方法模式是面向对象设计模式中的一种,它属于创建型模式,主要解决的是当系统需要创建的对象具有多种类型,而具体创建哪种类型的对象在运行时才能确定的问题。在这个压缩包中,`FactoryMethod`可能包含了Java...
在这个"菜鸟教程设计模式之工厂模式代码整理"中,我们将深入探讨工厂模式的基本概念、结构以及如何在实际编程中应用。 工厂模式的核心思想是通过一个专门的工厂类来创建对象,而不是让客户端代码直接实例化具体的...
抽象工厂模式是创建型设计模式中的一种,用于创建一系列相关或相互依赖的对象,而无需指定其具体类。抽象工厂模式强调产品的系列,对于有多个产品等级结构的系统非常有用。在抽象工厂模式中,一个工厂负责创建多个...
这三种工厂模式的共同之处在于它们都为对象的创建提供了抽象层,隐藏了具体的实例化过程。然而,它们之间的区别在于灵活性和抽象程度: - 工厂方法模式提供了一种定义抽象接口的方法,让子类来决定具体实例化哪个类...
工厂方法模式是面向对象设计模式中的一个创建型模式,它提供了一种封装对象创建过程的方式,使得具体的对象创建过程可以延迟到子类中进行。在C++编程中,工厂方法模式广泛应用于各种软件设计中,因为它能有效地解耦...
工厂模式是设计模式中的一种创建型模式,它的主要目的是为了隔离对象的创建过程,使得客户端代码无需关心具体对象的创建细节,只需通过一个统一的接口来获取所需的对象。 在Java编程语言中,工厂模式通常分为简单...
3. **抽象工厂模式**:抽象工厂模式是工厂方法模式的扩展,它关注的是整个产品族的创建,提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。在不同的环境中,可以使用不同的工厂类来生产一系列...
抽象工厂设计模式抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式
2. **工厂模式**:用于创建对象,特别是在需要根据某些条件动态创建不同类型的薪资对象时。比如,可以有一个薪酬计算工厂,根据员工类型(全职、兼职等)返回相应的薪酬计算类。 3. **策略模式**:薪资计算可能涉及...