设计模式之享元模式

来源:互联网 发布:网络语cp,os是什么意思 编辑:程序博客网 时间:2024/05/29 18:13

flyweight设计模式

这里写图片描述
这里写图片描述

享元模式的实现

这里写图片描述
这里写图片描述

//抽象享元类public interface ChessFlyWeight {    void setColor(String c);    String getColor();    void display(Coordinate c);}//具体享元类class ConcreteChess implements ChessFlyWeight {    private String color;    public ConcreteChess(String color) {        super();        this.color = color;    }    @Override    public void display(Coordinate c) {        System.out.println("棋子颜色:"+color);        System.out.println("棋子位置:"+c.getX()+"----"+c.getY());    }    @Override    public String getColor() {        return color;    }    @Override    public void setColor(String c) {        this.color = c;    }}//外部状态UnSharedConcreteFlyWeightpublic class Coordinate {    private int x,y;    public Coordinate(int x, int y) {        super();        this.x = x;        this.y = y;    }    public int getX() {        return x;    }    public void setX(int x) {        this.x = x;    }    public int getY() {        return y;    }    public void setY(int y) {        this.y = y;    }}public class ChessFlyWeightFactory {    //享元池    private static Map<String,ChessFlyWeight> map = new HashMap<String, ChessFlyWeight>();    public static ChessFlyWeight  getChess(String color){        if(map.get(color)!=null){            return map.get(color);        }else{            ChessFlyWeight cfw = new ConcreteChess(color);            map.put(color, cfw);            return cfw;        }    }}public class Client {    public static void main(String[] args) {        ChessFlyWeight chess1 = ChessFlyWeightFactory.getChess("黑色");        ChessFlyWeight chess2 = ChessFlyWeightFactory.getChess("黑色");        System.out.println(chess1);        System.out.println(chess2);        System.out.println("增加外部状态的处理===========");        chess1.display(new Coordinate(10, 10));        chess2.display(new Coordinate(20, 20));    }}

以上设计模式均为结构型模式
这里写图片描述

原创粉丝点击