工厂设计模式

2022/3/20 6:31:52

本文主要是介绍工厂设计模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

简单工厂模式和抽象工厂模式

package DesignPattern;

/**
 * 工厂模式
 */
public class Test02 {

    /**
     * 简单的工厂模式
     */
//    public static void main(String[] args) {
//
//        EasyClassFactory getClass = new EasyClassFactory();
//        Course english = getClass.startClass("English");
//        english.beginClass();
//    }


    /**
     * 工厂方法模式,
     * @param args
     */
    public static void main(String[] args) {
        EnglishFactory factory = new EnglishFactory();
        Course course = factory.creatCourse();

        course.beginClass();
    }



}





interface Course{
    void beginClass();
}


class EnglishCourse implements Course{

    @Override
    public void beginClass() {
        System.out.println("上英语课");
    }
}

class MathCourse implements Course{

    @Override
    public void beginClass() {
        System.out.println("上数学课");
    }
}


class EasyClassFactory{
    /**
     *
     * 简单工厂模式
     * 假如我们有一个方法需要获取课程对象,那么我们下次增加了一门课就要修改这个类的代码,
     * 不满足OCP开闭原则,所以我们应该用工厂方法模式
     * @param clas
     * @return
     */

    public Course startClass(String clas){
        if ("English".equals(clas)){
            return new EnglishCourse();
        }else if ("Math".equals(clas)){
            return new MathCourse();
        }else {
            return null;
        }
    }
}

/**
 * 工厂方法模式,每一门课程由每一门课程的工厂独自完成而不是
 * 都交给一个工厂来处理
 *
 * 但是这种方式会导致一个类过多,系统的复杂性提高
 */
interface ClassFactory{
    public Course creatCourse();
}

class EnglishFactory implements ClassFactory{

    @Override
    public Course creatCourse() {
        return new EnglishCourse();
    }
}

class MathFactory implements ClassFactory{

    @Override
    public Course creatCourse() {
        return new MathCourse();
    }
}


这篇关于工厂设计模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程