转发Java设计当中的工厂设计模式
2021-03-21 00:26
标签:rod 空调被 决定 rac 结构 多态 工作 system actor 工厂模式:主要用于实例化具有公共接口的类。工厂模式可以动态确定哪个类应该被实例化。 工厂模型的形式 工厂模型主要使用以下几种形式之一: 1:简单工厂(Simple Factory)。 2:工厂法(Factory Method)。 3:抽象工厂(抽象工厂)。 简易工厂(简易工厂) 也叫静态工厂,是工厂模式3状态下最简单的结构。主要有一个静态方法,用来接受参数,根据参数决定返回实现相同1接口的不同类的实例。让我们看一个具体的例子: 假设一个工厂生产洗衣机、冰箱、空调等等. 我们首先为所有产品定义一个通用的产品界面 公共界面产品{} 然后我们让这个工厂的所有产品都必须实现这个接口 公共类洗衣机实现产品{ 公共洗衣机(){ System.out.println(‘洗衣机制造‘); {} {} 公共类Impox实现产品{ public Impox(){ System.out.println(‘冰箱制造‘); {} {} 公共级空调实施产品{ public Impox(){ System.out.println(‘空调制造‘); {} {} 接下来,我们将编写一个工厂类,负责生产上述产品 公共类SimpleFactory { 公共静态产品工厂(字符串产品名称)引发异常{ if(ProductName . equals(‘ Washer ‘)){ 退回新垫圈(); } else if(ProductName . equals(‘ Impox ‘){ return new Impox();} else if(ProductName . equals(‘ AirCondition ‘){ 返回新空调(); }else{ 抛出新的Exception(‘没有这样的产品‘); {} {} {} 好了,有了这个工厂类,我们就可以开始下单了,SimpleFactory会根据不同的订单类来决定生产什么产品。 公共静态void main(String[] args) { 尝试{ simpleFactory . Factory(‘ Washer ‘); simple factory . factory(‘ Impox ‘); SimpleFactory.factory(‘空调‘); }捕获(例外e) { e . printstacktrace(); {} {} 从上面的代码可以看出,一个SimpleFactory的核心是一个SimpleFactory类,它具有必要的逻辑判断能力和创建所有产品的权利。我们只需要给他订单就能得到我们想要的产品。这个好像用起来很方便。 然而,事实上,这个简单工厂有许多限制。首先,每次我们要添加一个新的产品,都要修改SimpleFactory的原始代码。其次,当我们的产品很多,产品之间存在复杂的层次关系时,这个类必然具有复杂的逻辑判断能力,其代码量会持续激增,对于未来的保护简直是吓人。 此外,所有系统都严重依赖SimpleFactory类。只要SimpleFactory类1出了问题,系统就会进入无法工作的状态,这也是最致命的一点. 上述缺点将在工厂模式的另外两种状态下得到解决。 工厂方法(工厂方法) 上面的代码告诉我们,简单的工厂并不简单,它是所有模型的核心。一旦出了问题,所有的模型都会受到影响,无法工作。为了降低风险,为未来的保护和扩展做准备,我们需要对其进行改造,并引入工厂方法。工厂方法为工厂类定义了接口,用多态来削弱了工厂类的职能,以下是工厂接口的定义: 公共接口工厂{ public Product create(); {} 我们再来定义1个产品接口 公共界面产品{} 1下是实现了产品接口的产品类 公共类洗衣机实现产品{ 公共洗衣机({ System.out.println(‘洗衣机被制造了); {} {} 公共类Impox实现产品{ public Impox(){ System.out.println(‘冰箱被制造了); {} {} 公共级空调实施产品{ public Impox(){ System.out.println(‘空调被制造了); {} {} 接下来,就是工厂方法的核心部份,也就是具体创建产品对象的具体工厂类, //创建洗衣机的工厂 公共类创建洗衣机实现工厂{ 公共产品创建({ 退回新垫圈(); {} {} //创建冰箱的工厂 公共类创建冰箱实现工厂{ 公共产品创建({ 返回new Impox(); {} 转发Java设计当中的工厂设计模式 标签:rod 空调被 决定 rac 结构 多态 工作 system actor 原文地址:https://www.cnblogs.com/mt888888/p/13909085.html
上一篇:java基础课程第二章编程题
下一篇:java实现-字典序全排列