首页 > 编程语言 >享元模式--Java实现

享元模式--Java实现

时间:2023-11-13 09:04:00浏览次数:36  
标签:享元 Java ChessFactory -- Coordinates Chess chessFactory new public

相关类图

具体代码

//ChessFactory.java
package org.example.test012;

import java.util.Hashtable;

public class ChessFactory {
    public static ChessFactory getChessFactory() {
        return chessFactory;
    }

    public static ChessFactory chessFactory = new ChessFactory();
    public 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 Chess getChess(String color) {
        return (Chess)ht.get(color);
    }


}

//Coordinates.java
package org.example.test012;

public class Coordinates {
    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;
    }

    private int x;
    private int y;

    public Coordinates(int x, int y) {
        this.x = x;
        this.y = y;
    }

}

//Chess.java
package org.example.test012;

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

//WhiteChess.java
package org.example.test012;

public class WhiteChess extends Chess {
    @Override
        public String getColor() {
        return "白";
    }
}

//BlackChess.java
package org.example.test012;

public class BlackChess extends Chess {
    @Override
        public String getColor() {
        return "黑";
    }
}

//Client.java
package org.example.test012;

public class Client {
    public static void main(String[] args) {
        Chess black1, black2, black3, white1, white2;
        ChessFactory chessFactory;
        chessFactory = ChessFactory.getChessFactory();
        black1 = chessFactory.getChess("b");
        black2 = chessFactory.getChess("b");
        black3 = chessFactory.getChess("b");
        white1 = chessFactory.getChess("w");
        white2 = chessFactory.getChess("w");

        black1.getLocate(new Coordinates(1, 1));
        black2.getLocate(new Coordinates(2, 4));
        black3.getLocate(new Coordinates(4, 1));
        white1.getLocate(new Coordinates(2, 6));
        white2.getLocate(new Coordinates(8, 0));

    }
}

运行结果

标签:享元,Java,ChessFactory,--,Coordinates,Chess,chessFactory,new,public
From: https://www.cnblogs.com/liuzijin/p/17828365.html

相关文章

  • Windows11安装运行Linux
    学习Linux,为了省钱不想买一台云服务器,或者不想装VMware虚拟机,win11可以通过这种方式安装Linux(Ubuntu)一、开启Windows功能1.在window11的搜索框内,搜索"Windows功能",出现了“启用或关闭Windows功能”,点击打开。2.勾选"适用于Linux的Windows子系统",“虚拟机平台”,“Windows虚拟机......
  • CodeDesk-一个新款跨平台桌面开发框架
     CodeDesk的灵感来自Electron和Photino。这是一个基于.NET的开源项目。CodeDesk的目标是使开发人员能够在跨平台的本机应用程序中使用WebUI(HTML、JavaScript、CSS等)无论是Html,Blazor,Vue,React还是Angular等前端框架,都可以与CodeDesk一起使用,而不是学习特定于平台的......
  • 【算法】友谊与雪花的舞动,脚本解析器原理
    在11月的下雪天,小悦身处于温暖的办公室中,窗外的雪花在灯光下翩翩起舞。她盯着电脑屏幕,不经意间,一个熟悉的身影从办公室门口处经过,吸引了她的目光。那个人看上去很像是一个女孩,名叫苏菲,是她在大学时期遇到的国外交换生。小悦的心跳加速,她有些不敢相信自己的眼睛。在她的记忆中,苏菲......
  • HTML02(定位,浮动)
    标签独占一行的标签叫块级标签;可以在一行上展示的标签叫做内联标签;块级标签和内联标签可以切换,通过控制标签的显示方式。display:inline;将元素设置为内联元素;display:block;将元素设置为块级元素;设置容器垂直居中显示:line-height等于容器的高度.文本居......
  • Nacos-配置热更新【自动刷新】
    Nacos中的配置文件变更后,微服务无需重启就可以感知,通过下面两种配置实现:方式一:在@Value注入的变量所在类上添加注解@RefreshScope 方式二:使用@ConfigurationProperties注解读取配置文件内容packagecn.itcast.user.config;importlombok.Data;importorg.springframewo......
  • 实验2:简单工厂模式
    本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解简单工厂模式的动机,掌握该模式的结构;2、能够利用简单工厂模式解决实际问题。[实验任务一]:女娲造人使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,......
  • 每日博客
    实验12:外观模式  实验13:享元模式    ......
  • java.net.ConnectException: Connection refused: no further information
    问题描述报错原因在测试过程中,没有开启Redis解决方案开启Redis,再重新运行代码即可解决......
  • ARC119F 题解
    前言ARC119F好厉害,是没见过的自动机DP。正文[1]分析主要分析一下为什么这么写。[2]状态设计[3]自动机状态转移感觉状态设计中最难的就是如何处理带\(O\)的。见参考资料。[4]代码还没写。写ing这是自动机的初始化(有点麻烦)。intto[Kind][2][2]={{{2,0},{8,0......
  • 2.4 CE修改器:代码替换功能
    代码替换功能,需要使用CheatEngine工具的“代码查找”功能,来查找游戏数据存储在内存中的地址。首先找到当前数值的存储地址,并将其添加到下方地址列表中。然后右键单击该地址,并选择“找出是什么改写了这个地址”,将弹出一个空白窗口。接着,点击本教程窗口上的“改变数值”按钮,并返......