首页 > 其他分享 >软件设计Tutorial 13_享元模式

软件设计Tutorial 13_享元模式

时间:2023-11-14 14:34:14浏览次数:31  
标签:享元 13 ChessPiece int display white piece public Tutorial

[实验任务一]:围棋

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

实验要求:

1.  提交类图;

 

 

2.提交源代码;

3.注意编程规范;

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

 

package Xiang;

public class BlackChessPiece implements ChessPiece {
    @Override
    public void display(int x, int y) {
        System.out.println("在位置(" + x + ", " + y + ") 显示黑棋");
        // 显示黑棋的具体实现
    }
}

package Xiang;

public interface ChessPiece {
    void display(int x, int y); // 在棋盘的特定位置显示棋子
}
package Xiang;

import java.util.HashMap;
import java.util.Map;

public class ChessPieceFactory {
    private static Map<String, ChessPiece> pieces = new HashMap<>();

    public static ChessPiece getChessPiece(String color) {
        ChessPiece piece = pieces.get(color);

        if (piece == null) {
            if (color.equalsIgnoreCase("white")) {
                piece = new WhiteChessPiece();
            } else if (color.equalsIgnoreCase("black")) {
                piece = new BlackChessPiece();
            }

            pieces.put(color, piece);
        }
        return piece;
    }
}

package Xiang;

public class WhiteChessPiece implements ChessPiece {
    @Override
    public void display(int x, int y) {
        System.out.println("在位置(" + x + ", " + y + ") 显示白棋");
        // 显示白棋的具体实现
    }
}

package Xiang;

public class Main {
    public static void main(String[] args) {
        ChessPiece white = ChessPieceFactory.getChessPiece("white");
        white.display(1, 2);

        ChessPiece black = ChessPieceFactory.getChessPiece("black");
        black.display(3, 4);

        ChessPiece whiteAgain = ChessPieceFactory.getChessPiece("white");
        whiteAgain.display(5, 6);
    }
}

 

标签:享元,13,ChessPiece,int,display,white,piece,public,Tutorial
From: https://www.cnblogs.com/JJTyyds/p/17831495.html

相关文章

  • 【洛谷 P1307】[NOIP2011 普及组] 数字反转 题解(字符串)
    [NOIP2011普及组]数字反转题目描述给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。输入格式一个整数。输出格式一个整数,表示反转后的新数。样例#1样例输入#1123样......
  • 11月13数组以及数组常用发法
    目录1.数组2.数据的常用方法1.length方法2.push方法3.pop方法4.unshift方法5.shift方法6.slice方法7.reverse方法8.join方法9.concat方法10.sort方法特殊情况解决特殊情况的方法11.forEach方法12.splice方法null13.map方法还有用for循环取值1.数组数组的作用:使用单独的变量名来......
  • chapter 13:TCP/IP 和网络编程
    学习笔记:TCP/IP和网络编程13.0摘要本章分为两个部分:TCP/IP协议与应用包括TCP/IP协议栈、IP地址、主机名、DNS、IP数据包和路由器。描述了UDP和TCP协议、端口号以及TCP/IP网络中的数据流。解释了服务器-客户端计算模型和套接字编程接口。通过使用UDP和TCP套接字的示例......
  • 11月13数组以及数组常用发法
    目录1.数组2.数据的常用方法1.length方法2.push方法3.pop方法4.unshift方法5.shift方法6.slice方法7.reverse方法8.join方法9.concat方法10.sort方法特殊情况解决特殊情况的方法11.forEach方法12.splice方法null13.map方法还有用for循环取值1.数组数组的作用:使用单独的变量名来......
  • 2023年11月13日模拟赛
    同步更新于我的博客总结昨日中二病发作写了一篇离谱文章,请直接无视,别看阿⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄。害怕......
  • 享元模式
    说到享元模式,第一个想到的应该就是池技术了,String常量池、数据库连接池、缓冲池等等都是享元模式的应用,所以说享元模式是池技术的重要实现方式。比如我们每次创建字符串对象时,都需要创建一个新的字符串对象的话,内存开销会很大,所以如果第一次创建了字符串对象“adam“,下次再......
  • 11.13 模拟赛小记
    30+0+10+0全真模拟。今天的模拟赛有一种格外的说不上来的绝望的感觉。很不好描述的。一直在想如果这是真实的noip赛场那我不就大寄特寄了。下午因为不舒服所以玩了一下午(?)一直在机惨别人(?)玩的很开心。但还是想看大家在机房跳钢管舞喵(?A.game赛时看到这个题之后就变得很愚蠢。......
  • 11.13
    本周从周一上完课,把那天的学长的期中考试写完,就放松了,没继续练,就把idea一关啥也没关,然后除了正常写作业,已经周二晚上周三早上背了背英语,来应对老师的听写测验,学习的时间分配很少,感觉好像期中考试完了之后,就放松了,周末三天更是除了写了点离散数学作业,一点没学习,导致本周一的分级测......
  • 2023/11/13(可对角化)
    ......
  • 20231113
    2023/11/13codeforces906(div2)补题A.SortingwithTwos题意:给一个长度为n的数组,可以做任意次以下操作:选择一个整数m,将1-2^m的数减1。若能使数组变为一个单调递增的数组则输出YES,否则输出NO思路:一个区间的右边界和他的右边是无所谓大小的,因为我们可以整段减来使其一定单......