设计模式—工厂方法模式

工厂方法模式是一种创建型设计模式,它将对象(产品)的创建交给一个工厂(通过工厂的接口,即面向接口进行)。当需要生成另一种产品时,只需要修改工厂的具体类型即可,工厂创建产品的部分不必进行修改。

下面以生产某本书的英译本或中译本为例。

首先明确在这个例子中要生产的产品为书本,它分为中译本和英译本。我们采用创建型的设计模式—工厂方法模式,将工厂接口命名为factory_printer,工厂的具体类有factory_printer_ch—负责生产中译本,factory_printer_en—负责生产英译本。

为了能够在获得工厂创建的产品后,对其进行统一的引用,即不必区分是中译本还是英译本,我们还需要一个书本的接口product_book,它也具有两个具体类product_book_ch和product_book_en。

首先是两个接口的定义:

interface product_book {
    void sayContent(); //输出书本内容
}

interface factory_printer {
    product_book print(); //印刷书本(即创建对象)
}

产品的两个具体类:

class product_book_ch implements product_book {
    public void sayContent() {
        System.out.println("这是一本中文书!");
    }
}

class product_book_en implements product_book {
    public void sayContent() {
        System.out.println("This is an English book !");
    }
}

工厂的两个具体类:

class factory_printer_ch implements factory_printer {
    public product_book print() {
        return new product_book_ch();
    }
}

class factory_printer_en implements factory_printer {
    public product_book print() {
        return new product_book_en();
    }
}

客户端调用:

public class Test {
    public static void main(String[] args) {
        //假如要生产英译本,仅需将factory_printer_ch改为factory_printer_en
        factory_printer printer = new factory_printer_ch(); 
        product_book book = printer.print();
        book.sayContent(); //输出:这是一本中文书!
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值