美文网首页
Java开发设计模式之工厂模式

Java开发设计模式之工厂模式

作者: 伪装的狼 | 来源:发表于2020-06-17 23:24 被阅读0次

public class FactoryMode {

public static void main(String[] args) {

    Fruit fruit = Factory.getInstance("apple");
    if (fruit!=null){
        fruit.getEat();
    }

}

}

//定义水果接口标准,水果就是用来吃的
interface Fruit{
void getEat();
}

//实现水果类的抽象方法
class Apple implements Fruit{
@Override
public void getEat() {
System.out.println("吃苹果!");
}
}

class Oranges implements Fruit{
@Override
public void getEat() {
System.out.println("吃橙子!");
}
}

class Factory{

public static final String APPLE = "apple";
public static final String ORANGES = "oranges";

/**
 * 根据传入的不同名称返回不同对象
 * @param fruitName
 * @return
 */

public static Fruit getInstance(String fruitName){
    if (APPLE.equals(fruitName)){
        return new Apple();
        }
    else if (ORANGES.equals(fruitName)){
        return new Oranges();
    }else {
        return null;
    }
}

}

/*

  • 总结:程序定义了一个Factory工厂类,并且提供了一个静态方法用来返回Fruit接口的实例化对象,
  • 该方法对外隐藏子类,只需要根据声明Fruit类即可实例化一个实现Fruit接口的对象。
  • 缺点:
  • 1、每次修改添加Fruit接口时都需要对Factory进行修改
  • 2、如果有多个接口是通过Factory获取实例的,那么Factory获取实例的逻辑也要添加
  • */

相关文章

  • 工厂模式

    java设计模式-工厂模式 工厂模式: 工厂模式是java设计模式里最常用的设计模式之一。 工厂模式属于创建型模式...

  • Java与模式

    《JAVA与模式》之简单工厂模式《JAVA与模式》之工厂方法模式《JAVA与模式》之抽象工厂模式

  • Java设计模式教程

    Java设计模式教程 Java工厂设计模式 Java抽象工厂模式 Java单例模式 Java建造者(Builder...

  • 代码段简单学习设计模式 -- 抽象工厂模式

    《JAVA与模式》之抽象工厂模式 大话设计模式 抽象工厂模式(Abstraci Factory): 提供一个创...

  • 设计模式之活学活用的工厂模式

    设计模式之活学活用的工厂模式 工厂模式简介 工厂模式是我们日常开发工作中经常使用的设计模式,它属于创建型设计模式,...

  • Java设计模式——工厂模式

    Java设计模式之工厂模式 回顾 上期我们介绍了一个非常简单的设计模式,也是平时开发工作中最常见也是最常用的设计模...

  • iOS设计模式(三)之抽象工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(一)之简单工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • iOS设计模式(二)之工厂模式

    设计模式系列传送门 iOS设计模式(一)之简单工厂模式iOS设计模式(二)之工厂模式iOS设计模式(三)之抽象工厂...

  • java设计模式

    一、《JAVA与模式》之工厂方法模式 二、《JAVA与模式》之抽象工厂模式 三、《JAVA与模式》之单例模式 四、...

网友评论

      本文标题:Java开发设计模式之工厂模式

      本文链接:https://www.haomeiwen.com/subject/denexktx.html