设计模式 (二) 工厂模式 Java

news/2023/6/7 23:01:44

目录

一、案例引出

二、简单工厂模式

二、抽象工厂


工厂设计模式,顾名思义类似一家工厂来制造各种产品,目的在于提高代码的可扩展性。

一、案例引出

通过接口来实现一类产品的功能,如目前有飞机、轮船、汽车这类产品的实体类,同时需要具备移动的属性,此时我们优先想到的是通过接口来实现,例如:

插件Moveable接口来让各个需要该属性的对象实现,但这样做在业务结构简单是没问题,当业务结构复杂时,该方式的拓展性并不太好,没增加一种产品都需要去实现多个属性接口。

public interface Moveable {void go();
}
public class Car implements Moveable{@Overridepublic void go() {System.out.println("car goes...");}
}
public class Plane implements Moveable{@Overridepublic void go() {System.out.println("plane goes...");}
}
public class Ship implements Moveable{@Overridepublic void go() {System.out.println("ship goes...");}
}

下面来看看工厂模式是如何实现的

二、简单工厂模式

简单工厂模式适用于产品种类单一的业务

通过简单工厂可以有效管理种类单一的产品

public class SimpleFactory {public static Moveable createCar(){//前至处理return new Car();}public static Moveable createShip(){//前至处理return new Ship();}public static Moveable createPlane(){//前至处理return new Plane();}}

产品创建:当产品增加时直接在工厂里进行添加,拓展性较好

    public static void main(String[] args) {Moveable car = SimpleFactory.createCar();Moveable ship = SimpleFactory.createShip();Moveable plane = SimpleFactory.createPlane();car.go();ship.go();plane.go();}

二、抽象工厂

对于业务复杂,种类较多的产品时简单工厂并不能有效解决种类繁多管理的问题,由此引入抽象工厂进行管理:

我们可以创建一个抽象工厂来管理各个大类的产品:

public abstract class AbstractFactory {abstract Vehicle createVehicle();abstract Food createFood();abstract Weapon createWeapon();
}

分别创建各个大类的抽象类:

public abstract class Food {abstract void eat();
}
public abstract class Vehicle {abstract void go();
}
public abstract class Weapon {abstract void fight();
}

创建多种不同的工厂来加工不同的产品:都继承自AbastractFactory。产品都继承自类别抽象类。

public class ModernFactory extends AbstractFactory{@OverrideVehicle createVehicle() {return new Car();}@OverrideFood createFood() {return new Bread();}@OverrideWeapon createWeapon() {return new AK47();}
}
public class AncientFactory extends AbstractFactory {@OverrideVehicle createVehicle() {return new Ship();}@OverrideFood createFood() {return new Fish();}@OverrideWeapon createWeapon() {return new Arrow();}
}

以上演示为多个不同工厂的实例。

工厂生产产品:该设计模式也可借鉴单例模式来实现静态工厂。

    public static void main(String[] args) {AncientFactory ancientFactory = new AncientFactory();Food food = ancientFactory.createFood();food.eat();}

工厂模式生产和管理产品总结到此。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4561079.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

java开发环境配置及问题排查

Java程序必须运行在JVM之上,所以,我们第一件事情就是安装JDK。 JDK(Java Development Kit),是Java开发工具包,它提供了Java的开发环境(提供了编译器javac等工具,用于将java文件编译为class文件)和运行环境(提 供了JVM…

Android(java)学习笔记51:ScrollView用法

1. 理论部分 (1)ScrollView和HorizontalScrollView是为控件或者布局添加滚动条 (2)上述两个控件只能有一个孩子,但是它并不是传统意义上的容器 (3)上述两个控件可以互相嵌套 (4&…

CoordinatorLayout嵌套AppBarLayout的使用

CoordinatorLayout嵌套AppBarLayout的使用 实现的效果图: 要实现这种联动的效果图,就需要使用CoordinatorLayout,这是一个专门为联动而生的控件。在这种效果图中,我们先来学习下TabLayout的使用。 一、TabLayout的基本使用 …

Android—ScrollView和HorizontalScrollView使用

Android当中比较常用的两个布局容器–ScrollView和HorizontalScrollView,从字面意义上来看也是非常的简单的,ScrollView就是一个可以滚动的View,这个滚动的方向是垂直方向的,而HorizontalScrollView则是一个水平方向的可以滚动的V…

Android 对Gallery的挖掘

一.循环Gallery 现在看一下官方API的文档,可以看到这样一句话:该类已被弃用,其他水平滚动窗口小部件包括HorizontalScrollView和ViewPager从支持库。因为这个类是API Level 1里面的,时间比较久了。虽说被弃用,也只是不…

什么是边际效应?

解答:通俗来讲,边际效应就是指,持续的进行同类投入,到达一定的界线后,反而会减少产出,最早是由德国心理学家艾宾浩斯发现的,比如你购买了四个包子,但第一个包子给你的饱腹感最强&…

边际效用递减规律,真用起来,还挺多坑

边际效应递减规律,law of diminishing marginal utility,是经济学的一个重要规律。这里引用《经济学-萨缪尔森》著作中对该规律的定义:随着个人消费越来越多的某种物品,他从中得到的新增的或边际的效用量是下降的。书中给了一个规…

《微观经济学》 第四章

第四章 消费者行为 4.1 消费者偏好与效用 效用:消费者从商品消费中获得的满足,是一个主观感受。 测度满足程度的单位,像元、公里、千克一样。 使用价值和效用的区别: 使用价值是商品的客观属性,是商品的一种功能&a…