1.工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个,也就是说工厂方法模式让实例化推迟到子类
    2.mybatis中,事务模块和数据源模块都使用了工厂方法模式
    3.面对的目标一般都是单类的。

    1. /**
    2. * 桌子接口
    3. */
    4. public interface Desk {
    5. String getType();
    6. }
    1. /**
    2. * 木质桌子
    3. */
    4. public class WoodenDesk implements Desk {
    5. private String type = "木质桌子";
    6. @Override
    7. public String getType() {
    8. return type;
    9. }
    10. }
    1. /**
    2. * 塑料桌子
    3. */
    4. public class PlasticDesk implements Desk {
    5. private String type = "塑料桌子";
    6. @Override
    7. public String getType() {
    8. return type;
    9. }
    10. }
    1. /**
    2. * 工厂方法
    3. */
    4. public interface DeskFactory {
    5. Desk createDesk();
    6. }
    1. /**
    2. * 木质桌子工厂
    3. */
    4. public class WoodenDeskFactory implements DeskFactory {
    5. @Override
    6. public Desk createDesk() {
    7. return new WoodenDesk();
    8. }
    9. }
    1. /**
    2. * 塑料桌子工厂
    3. */
    4. public class PlasticDeskFactory implements DeskFactory {
    5. @Override
    6. public Desk createDesk() {
    7. return new PlasticDesk();
    8. }
    9. }
    1. /**
    2. * 测试类
    3. */
    4. public class Clienter {
    5. public static void main(String[] args) {
    6. DeskFactory deskFactory = new WoodenDeskFactory();
    7. Desk desk = deskFactory.createDesk();
    8. }
    9. }