创建型模式之 -- 工厂方法模式

2018-06-18 03:43:12来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

1.普通工厂模式

    目录结构大致为这样:

 

1.创建一个游戏接口:

public interface PlayGame {
    public void game(); 
}

    2.游戏分别被两种设备实现

public class Computer implements PlayGame{

    @Override
    public void game() {
        System.err.println("玩电脑游戏!!");
    }
}
public class Phone implements PlayGame {

    @Override
    public void game() {
        System.err.println("玩手机游戏");
    }

}

    3.创建游戏工厂

/**
 * 玩游戏工厂
 * @author 淹死的鱼o0
 */
public class PlayGameFactory {

    public PlayGame produce(String type){
        if ("phone".equals(type)) {  
            return new Phone();  
        } else if ("computer".equals(type)) {  
            return new Computer();  
        } else {  
            System.err.println("请输入游戏设备!");  
            return null;  
        }  
    }
}

    4.测试:

public class PlayGameTest {
    @Test
    public void gameTest() {
        PlayGameFactory factory = new PlayGameFactory();
        //PlayGame game = factory.produce("computer");
        //game.game();
        PlayGame game = factory.produce("phone");
        game.game();
    }
}

 

    5.输出

 

2.多个工厂方法模式,是对普通工厂方法模式的改进

 

    将上面代码做如下修改

/**
 * 玩游戏工厂
 * 
 * @author 淹死的鱼o0
 */
public class PlayGameFactory {
    public PlayGame producePhone() {
        return new Phone();
    }

    public PlayGame produceComputer() {
        return new Computer();
    }
}

    测试:

public class PlayGameTest {
    @Test
    public void gameTest() {
        PlayGameFactory factory = new PlayGameFactory();
        PlayGame game = factory.producePhone();
        game.game();
    }
}

 

3.静态工厂方法模式

    

/**
 * 玩游戏工厂
 * 
 * @author 淹死的鱼o0
 */
public class PlayGameFactory {
    public static PlayGame producePhone() {
        return new Phone();
    }

    public static PlayGame produceComputer() {
        return new Computer();
    }
}

 

总结:工厂模式适合用来快速创建对象.

 

欢迎转载:

中文名:惠凡

博客名:淹死的鱼o0

转载时请说明出处:http://www.cnblogs.com/huifan/

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:细说SpringDI Setter注入

下一篇:关于Spring MVC 中地址栏访问 /WEB-INF下的.jsp