zoukankan      html  css  js  c++  java
  • java设计模式之享元模式

    定义一个公用的内部

    public interface ClessFlyWeight {
    void setColor(String c);
    String getColor();
    void display(Coordinate c);
    }
    class ConcreteChess implements ClessFlyWeight{

    private String color;


    public ConcreteChess(String color) {
    super();
    this.color = color;
    }

    @Override
    public String getColor() {
    // TODO Auto-generated method stub
    return color;
    }

    @Override
    public void setColor(String c) {
    // TODO Auto-generated method stub
    this.color=c;
    }

    @Override
    public void display(Coordinate c) {
    // TODO Auto-generated method stub
    System.out.println("棋子颜色"+color);
    System.out.println("棋子位置:"+c.getX()+c.getY());
    }

    }

    定义享元工厂

    /**
    *
    * 享元工厂类
    * @author zzdxw
    *
    */
    public class ClessFlyWeightFactory {
    //享元池
    private static Map<String, ClessFlyWeight> map=new HashMap<String ,ClessFlyWeight>();
    public static ClessFlyWeight getChess(String color){
    if(map.get(color)!=null){
    return map.get(color);
    }else{
    ClessFlyWeight cfw=new ConcreteChess(color);
    map.put(color,cfw);
    return cfw;
    }
    }
    }

    //定义一个外部的

    public 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 Client {
    public static void main(String[] args) {
    ClessFlyWeight chess1=ClessFlyWeightFactory.getChess("黑色");
    ClessFlyWeight chess2=ClessFlyWeightFactory.getChess("黑色");
    System.out.println(chess1);
    System.out.println(chess2);
    }
    }

  • 相关阅读:
    CreateDIBSection函数
    rand()和srand()GetTickCount函数用法
    PRIMARY LANGUAGE ID not a number
    videojs 动态加载视频
    [记录] nicescroll 在bootstrap tabs中工作
    [记录] js判断数组key是否存在
    li 水平排列并自动填满 ul
    [Laravel] 获取执行的Sql
    [Laravel]配置路由小记
    昨天冲动的搬到外面住了,oh yeah
  • 原文地址:https://www.cnblogs.com/cyz110/p/6506566.html
Copyright © 2011-2022 走看看