0
点赞
收藏
分享

微信扫一扫

简单工厂的简单抽象类实现


Study:底层抽象类;

package com.zhuhuix.startup.test;

public abstract class Study {
public abstract void study();
}

 EnglishStudy:英语学习类--继承抽象类并实现抽象方法

package com.zhuhuix.startup.test;

public class EnglishStudy extends Study {

@Override
public void study(){
System.out.println("We Study English");
}
}

MathStudy: 数学学习类--继承抽象类并实现抽象方法

package com.zhuhuix.startup.test;

public class MathStudy extends Study{

@Override
public void study(){
System.out.println("We Study Math");
}
}

 StudyFactory:学习工厂类--根据类型参数返回具体学习类

package com.zhuhuix.startup.test;

public class StudyFactory {
public Study getStudy(String type) {

switch (type.toLowerCase()) {
case "math":
return new MathStudy();
case "english":
return new EnglishStudy();

default:
return null;

}

}
}

Test:测试类--创建工厂类,根据学习类型返回具体学习类,并调用具体方法。

 

package com.zhuhuix.startup.test;

public class Test {
public static void main(String[] args) {
StudyFactory studyFactory = new StudyFactory();
Study study =studyFactory.getStudy("math");
if(study!=null){
study.study();
}

}
}

Diagrams如下: 

简单工厂的简单抽象类实现_java

从以上流图可以看出,具体的产品类都继承于抽象产品类,不同的产品由工厂统一封装,并负责创建具体产品,应用端的用户只需要访问工厂选择不同的产品就行了,实现了应用端与具体产品类的解藕。但简单工厂的最大弊病在于工厂类集中了所有产品类的创建工作,违反了高内聚低耦合的设计原则,另外应用端也需要对工厂中的各种产品都需进行了解,大大增加了应用端的难度系数。

举报

相关推荐

0 条评论