b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

解释器设计模式_lua解释器交互模式_解释器模式c语言(10)

电脑杂谈  发布时间:2017-02-22 18:11:38  来源:网络整理

外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口

这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用

使用外观模式的目的就是让我们使用更加简单(脑残)。记得我在一篇讲Netty编解码的时候讲到过Facebook提供的构建在Netty与Thrift之上的封装nifty: https://github.com/facebook/nifty。我确信无疑,里面使用了外观模式。(外观模式,也不想讲。当你遇到某些客户时,你会考虑使用它的)

享元模式(Flyweight Pattern)主要用于减少创建对象的数量,实现对象的共享,以减少内存占用和提高性能。

享元对象能做到共享的关键是区分内蕴状态(Internal State)和外蕴状态(External State)。

常见的连接池,String都使用了享元模式。

第一次听说享元模式时,别人举得是围棋的例子。从色彩上来看,围棋只有两种颜色,而围棋的落子却有不同的组合。所以我们将公有属性定义为Key,放在一个HashMap里面。

public class Circle{
    private String color;
    private int x;
    private int y;
    private int radius;

    public Circle(String color) {
        this.color = color;
    }

    public void setX(int x) {
        this.x = x;
    }

    public void setY(int y) {
        this.y = y;
    }

    public void setRadius(int radius) {
        this.radius = radius;
    }

    public void draw() {
        System.out.println("Circle: Draw() [Color : " + color
                + ", x : " + x + ", y :" + y + ", radius :" + radius);
    }
}
public class ShapeFactory {
    private static final HashMap<String, Circle> circleMap = new HashMap();

    public static Circle getCircle(String color) {
        Circle circle = circleMap.get(color);

        if (circle == null) {
            circle = new Circle(color);
            circleMap.put(color, circle);
            System.out.println("Creating circle of color : " + color);
        }
        return circle;
    }
}
public class FlyweightPatternDemo {
    private static final String colors[] =
            {"Red", "Green", "Blue", "White", "Black"};

    public static void main(String[] args) {

        for (int i = 0; i < 20; ++i) {
            Circle circle = ShapeFactory.getCircle(getRandomColor());
            circle.setX(getRandomX());
            circle.setY(getRandomY());
            circle.setRadius(100);
            circle.draw();
        }
    }

    private static String getRandomColor() {
        return colors[(int) (Math.random() * colors.length)];
    }

    private static int getRandomX() {
        return (int) (Math.random() * 100);
    }

    private static int getRandomY() {
        return (int) (Math.random() * 100);
    }
}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-33899-10.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...