java设计模式之工厂方法设计模式

Posted vlime

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java设计模式之工厂方法设计模式相关的知识,希望对你有一定的参考价值。

1.定义

定义一个用于创建对象的接口,让子类决定实例化哪一个类,FactoryMethod使一个类的实例化延迟到其子类.

2.意识图

 

3.代码示例

联想工厂创建联想的电脑,戴尔创建戴尔的电脑

1)电脑接口

/**
 * 电脑接口
 * wuyanlin2016@163.com
 *  2017年12月25日
 */
public interface Computer {
    /**
     * 描述-->一句话简介
     * @param description  描述语
     */
    public void describe(String description);
}

 

2).戴尔电脑

/**
 * Dell电脑
 * wuyanlin2016@163.com
 *  2017年12月25日
 */
public class DellComputer implements Computer {

    @Override
    public void describe(String description) {
        System.out.println(description);
    }
    
}

 

3).联想电脑

/**
 * Lenovo电脑
 * wuyanlin2016@163.com
 *  2017年12月25日
 */
public class LenovoComputer implements Computer {

    @Override
    public void describe(String description) {
        System.out.println(description);
    }
    
}

 

4).电脑工厂

/**
 * 电脑工厂
 * wuyanlin2016@163.com
 *  2017年12月25日
 */
public class ComputerFactory {
    public static Computer buildComputer(String pcName) {
        if("dell".equalsIgnoreCase(pcName)) return new DellComputer();
        if("lenovo".equalsIgnoreCase(pcName)) return new LenovoComputer();
        return null;
    }
}

 

5).电脑操作类

/**
 * 电脑操作类,调用工厂创建电脑
 * wuyanlin2016@163.com
 *  2017年12月25日
 */
public class ComputerOperator {
    
    /**
     * 创建电脑
     * @param pcName  电脑名字
     * @param  description  电脑描述
     */
    public void createComputer(String pcName,String description) {
        ComputerFactory.buildComputer(pcName).describe(description);
    }
}

 

6).客户端类

/**
 * 客户端
 * wuyanlin2016@163.com
 *  2017年12月25日
 */
public class Client {
    public static void main(String[] args) {
        ComputerOperator computerOperation = new ComputerOperator();
        computerOperation.createComputer("lenovo", "我是联想");
        computerOperation.createComputer("dell", "我是戴尔");
    }
}

 

 

7).结果

我是联想
我是戴尔

 

 

4.总结

何时选用?

1).一个接口多个实现,但是又不知道具体用哪一个实现,由子类去指定

2).系统设计本身就由子类去指定实现类

 

以上是关于java设计模式之工厂方法设计模式的主要内容,如果未能解决你的问题,请参考以下文章

Java设计模式之工厂模式

java设计模式之工厂方法设计模式

设计模式之工厂模式详解(java)

设计模式之工厂模式详解(java)

JAVA设计模式之工厂模式

Java设计模式之简单工厂工厂方法和抽象工厂