《大话设计模式》——读后感 (8)好菜每回味不同——建造者模式之经典案例(2)

本文参考地址:http://www.cnblogs.com/xieweikai/p/6826481.html

建造者模式应用场景

比如在玩“极品飞车”这款游戏,那么每一关的地图会千变万化,简单的来说,地图会有晴天和阴天之分,那么创建地图时就要根据晴天或者阴天来对地图上的场景,比如:天空,树,房子,和路面进行渲染,这个过程是一个固定的,每创建一个新地图都要执行这几个渲染,这是针对高级配置的电脑来说的。

    现在拥有低配置电脑的人不在少数,那么他们就不能玩游戏了吗?完全可以!只要将地图中占用资源比较高的渲染去掉就可以,比如带反射光影的树,这时候需要创建不同的地图,但地图的创建过程却是固定的,建造者模式完全可以应对这样的情况。

 

建造者抽象接口:

package com.sjmx.builder.typic;

public interface Map {
    
     public void create_weather();

     public void create_house();

     public void create_tree();

     public void create_way();
}

建造者产品1:

package com.sjmx.builder.typic;

public class MapCloudy implements Map {

    @Override
    public void create_weather() {
         System.out.println("阴天");
    }

    @Override
    public void create_house() {
         System.out.println("房了上玻璃发暗");
    }

    @Override
    public void create_tree() {
        System.out.println("树的颜色是深绿色");
    }

    @Override
    public void create_way() {
        System.out.println("路面有些潮湿");
    }

}

建造者产品2:

package com.sjmx.builder.typic;

public class MapSun implements Map {

    @Override
    public void create_weather() {
        System.out.println("晴天");
    }

    @Override
    public void create_house() {
         System.out.println("房了上玻璃发亮");
    }

    @Override
    public void create_tree() {
        System.out.println("树的颜色是浅绿色");
    }

    @Override
    public void create_way() {
        System.out.println("路面有些干燥");
    }

}

 

高画质指挥者:

package com.sjmx.builder.typic;

public class DectorHigh {

    public static void create_map(Map map) {
        // 创建的顺序很重要 从天空往路面创建
        map.create_weather();
        map.create_house();
        map.create_tree();
        map.create_way();

    }
}

 

低画质指挥者:

package com.sjmx.builder.typic;

public class DectorLow {

    public static void create_map(Map map) {
        // 创建的顺序很重要 从天空往路面创建
        map.create_weather();
        map.create_house();
    //    map.create_tree();
        map.create_way();

    }
}

 

客户端:

package com.sjmx.builder.typic;

public class Client {
    
    
    public static void main(String[] args) {
    
        MapSun sun = new MapSun();
        MapCloudy cloudy = new MapCloudy();
        
        System.out.println("高画质游戏场景:");
        DectorHigh.create_map(sun);
        System.out.println("");
        DectorHigh.create_map(cloudy);
        
        System.out.println("-------------------");
        System.out.println("低画质游戏场景:");
        DectorLow.create_map(sun);
        System.out.println("");
        DectorLow.create_map(cloudy);
    }
    
}

 

运行结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值