首页 > 其他分享 >每日随笔——享元模式

每日随笔——享元模式

时间:2023-11-21 23:47:14浏览次数:52  
标签:享元 int 每日 Chess ChessFactory address new 随笔 public

[实验任务一]:围棋

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

实验要求:

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));
    }

 

标签:享元,int,每日,Chess,ChessFactory,address,new,随笔,public
From: https://www.cnblogs.com/jiacheng-712/p/17843227.html

相关文章

  • 学习随笔(设计模式:观察者模式)
    内容今天学习了观察者模式。1.观察者模式又叫发布-订阅模式。2.观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变时,会通知所有观察者对象,使他们能够自动更新自己。3.观察者模式所做的工作其实就是在接触耦合。让耦合......
  • 每日总结2023年11月21日
    node:internal/crypto/hash:69  this[kHandle]=new_Hash(algorithm,xofLen);          ^ Error:error:0308010C:digitalenveloperoutines::unsupported这是我从GitHub上下载的项目,在运行前端vue时出现的问题,在网上搜了一下有两个方法,一个......
  • 每日总结
    今天继续书写erp的功能。@Overridepublicvoidwages_get(Wageswages){LocalDatecurrentDate=LocalDate.now();//获取月份intmonth=currentDate.getMonthValue();Stringmonth_now=month+"月";wages.setMonth(m......
  • 11.21每日总结
    实验内容与完成情况:(一) 编程实现以下指定功能,并用Hadoop提供的HBaseShell命令完成相同任务:  List列出hbase的表  查看表中的数据并且向指定表中添加数据。  删除列族。  统计表的行数和删除表。(二) HBase数据库操作1.创建表。     ......
  • 每日总结11.21
    HBase数据库操作(1)createTable(StringtableName,String[]fields)创建表,参数tableName为表的名称,字符串数组fields为存储记录各个字段名称的数组。要求当HBase已经存在名为tableName的表的时候,先删除原有的表,然后再创建新的表。(2)addRecord(StringtableName,Stringrow,Stri......
  • 软件设计模式学习每日总结-第九天
    第九天组合模式:组合多个对象形成树形结构,使得叶子和容器的使用具有一致性。透明组合模式:声明了对象的所有的方法。安全组合模式:不声明对象的方法。 ......
  • 2023.11.21——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.JavaGUI2.会话跟踪技术明日计划:学习......
  • 11.21每日总结
    今日时间:5h代码行数300学习内容:早上学习大数据的hbase的知识,打开hbase的指令是hbase打开方法,/export/server/hbase/bin/hbaseshell点击list查看表创建表得自己创建,creat‘表名’,‘列1‘,’列2‘,不知怎么必须用创建的,自己的还不行,还得是英文,学习计算机全是英文,当初我们的老祖......
  • Linux学习随笔——目录操作
    一.目录操作目录操作包括:创建、查看、切换、删除步骤;1.创建目录通过命令mkdir来创建,如需创建多层目录,加参数“-p”即可:mkdir目录mkdir-pdef/abc(多层目录)2.查看目录有这几种命令可以查看:pwd、ls(ls-a、ls-l(ll));pwd命令显示当前所在目录,添加“-P”可以显示实际工作目录:p......
  • 每日总结-23.22.21
    <!doctypehtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1"><metahttp-equiv="X-UA-Compatible......