每日随笔——享元模式

发布时间 2023-11-21 23:34:59作者: 伽澄

[实验任务一]:围棋

设计一个围棋软件,在系统中只存在一个白棋对象和一个黑棋对象,但是它们可以在棋盘的不同位置显示多次。

实验要求:

1.提交类图;

2.提交源代码;

3.注意编程规范;

4.要求用简单工厂模式和单例模式实现享元工厂类的设计。

 

 源码:

Address
package SC13;

class address {
     private int x;
     private int y;

             public address(int x,int y) {
                 // TODO Auto-generated constructor stub
                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;
             }
  }
 chess
package SC13;

abstract class Chess {
     public abstract String getColor();
     public void locate(address co) {
               System.out.println(this.getColor()+"棋的位置:"+co.getX()+","+co.getY());
            }
  }

blackchess
package SC13;

    public class BlackChess extends Chess{

        @Override
        public String getColor() {
            // TODO 自动生成的方法存根
            return "";
        }

    }
 whitechess
package SC13;

public class WhiteChess extends Chess {

    @Override
    public String getColor() {
        // TODO 自动生成的方法存根
        return "";
    }

}

chessfactory
package SC13;

import java.util.Hashtable;

public class ChessFactory {
    private static ChessFactory instance=new ChessFactory();
    private static Hashtable ht;
    public ChessFactory() {
        ht=new Hashtable();
      Chess black,white;
        black=new BlackChess();
        ht.put("b", black);
        white=new WhiteChess();
        ht.put("w", white);
    }
    public static ChessFactory getInstance() {
        return instance;
    }
    public static Chess getChess(String color) {
        return (Chess)ht.get(color)
                ;    }
}

client
package SC13;

public class Client {

    public static void main(String[] args) {
      Chess black1,black2,black3,white1,white2;
       ChessFactory factory;
        factory = ChessFactory.getInstance();
        black1 = ChessFactory.getChess("b");
        black2 = ChessFactory.getChess("b");
        black3 =ChessFactory.getChess("b");
        white1 = ChessFactory.getChess("w");
        white2 = ChessFactory.getChess("w");
        black1.locate(new address(5, 5));
        black2.locate(new address(-3, 4));
        black3.locate(new address(3, 1));
        white1.locate(new address(-1, 5));
        white2.locate(new address(2, 4));
    }