Java设计模式:三种工厂模式设计模式:三种工厂模式
最近在学习设计模式,结合了一下其它博客的观点,按照了自己的理解与实现,将自己的想法表达出来,以比较简单的易懂的最近在学习设计模式,结合了一下其它博客的观点,按照了自己的理解与实现,将自己的想法表达出来,以比较简单的易懂的
方式写出来,作为自己学习的输出,内容不是十分全面,希望帮助你们通过这里快速了解大概的思想,之后再做进一步学习。方式写出来,作为自己学习的输出,内容不是十分全面,希望帮助你们通过这里快速了解大概的思想,之后再做进一步学习。
本文分为三部分:
简单工厂模式;
工厂方法模式;
抽象工厂模式
一、简单工厂模式一、简单工厂模式
在介绍简单工厂模式之前,先来假设一下:
我们作为顾客,我们需要得到书这样一个物品。
于是,我们写出以下代码:
public interface Book {
public void typeOfBook();
}
class EnglishBook implements Book{
@Override
public void typeOfBook() {
System.out.println("我是一本英语书");
}
}
class MathBook implements Book{
@Override
public void typeOfBook() {
System.out.println("我是一本数学书");
}
}
这是顾客需要执行的操作:
public class Client {
public static void main(String[] args) {
Book b1 = new EnglishBook();
Book b2 = new MathBook();
b1.typeOfBook();
b2.typeOfBook();
}
}
在上述情况下,顾客需要获得一本书就必须自己执行创建的过程,即顾客需要自己满足自己动手创建来满足自己的需要,这对
用户不友好。
在这种情况下,我们有了简单工厂模式:
我们新建了一个BookFactory(或许叫BookStore,在这里我们假设BookFactory与BookStore一样都是生产书的地方),在这
个工厂类里我们定义了顾客需要了样本书籍,根据顾客的需求来返回不同的书籍。
public class BookFactory {
public Book getBook(String bookType){
if ("EnglishBook".equals(bookType)){
return new EnglishBook();
}else if("MathBook".equals(bookType)){
return new MathBook();
}else{
return null;
}
}
}
或者也可以写成以下形式:
public class BookFactory {
public static Book getEnglishBook() {
return new EnglishBook();
}
public static Book getMathBook() {
return new MathBook();