侧边栏壁纸
博主头像
Epoch

Java开发、Python爬虫、微服务、分布式、前端

  • 累计撰写 93 篇文章
  • 累计创建 110 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录

工厂模式

Epoch
2021-02-07 / 0 评论 / 0 点赞 / 346 阅读 / 366 字 / 正在检测是否收录...

工厂模式

工厂模式用户隐藏创建对象的细节

工厂模式核心:工厂类(Factory)

工厂模式可以细分为简单工厂、工厂方法与抽象工厂

简单使用一下简单工厂

首先创建一个接口

package com.xmaven.i18n;

/**
 * @ClassName I18N
 * @Description TODO 国际化
 * @Author Ambition
 * @Date 2021/2/7 14:15
 * @Version 1.0.0
 **/
public interface I18N {

    public String getTitle();

}

创建三个实现类实现上述接口

package com.xmaven.i18n;

/**
 * @ClassName Chinese
 * @Description TODO
 * @Author Ambition
 * @Date 2021/2/7 14:10
 * @Version 1.0.0
 **/
public class Chinese implements I18N {

    @Override
    public String getTitle() {
        return "人事管理系统";
    }

}
package com.xmaven.i18n;

/**
 * @ClassName English
 * @Description TODO
 * @Author Ambition
 * @Date 2021/2/7 14:11
 * @Version 1.0.0
 **/
public class English implements I18N {

    @Override
    public String getTitle() {
        return "Personnel Management System";
    }

}
package com.xmaven.i18n;

/**
 * @ClassName Italian
 * @Description TODO
 * @Author Ambition
 * @Date 2021/2/7 14:13
 * @Version 1.0.0
 **/
public class Italian implements I18N {

    @Override
    public String getTitle() {
        return "Sistema di gestione del personale";
    }
}

创建一个工厂类,隐藏我们创建对象的方法

package com.xmaven.i18n;

/**
 * @ClassName I18NFactory
 * @Description TODO
 * @Author Ambition
 * @Date 2021/2/7 14:18
 * @Version 1.0.0
 **/
public class I18NFactory {

    //静态工厂
    public static I18N getI18NObject(String area){
        if (area.equals("china")){
            return new Chinese();
        }else if (area.equals("English")){
            return new English();
        }else if (area.equals("Italy")){
            return new Italian();
        }else {
            return null;
        }
    }

}

创建测试类进行测试

package com.xmaven.factory;

import com.xmaven.i18n.I18N;
import com.xmaven.i18n.I18NFactory;

/**
 * @ClassName Software
 * @Description TODO
 * @Author Ambition
 * @Date 2021/2/7 14:09
 * @Version 1.0.0
 **/
public class Software {

    public static void main(String[] args) {
        I18N i18N = I18NFactory.getI18NObject("English");
        System.out.println(i18N.getTitle());
    }

}
0

评论区