首页 > 其他分享 >13. 享元模式

13. 享元模式

时间:2022-10-13 18:55:33浏览次数:49  
标签:享元 13 return String 模式 location new public Location

[实验任务一]:围棋

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

类图

image

代码

java代码

package test13;

public class BlackChess implements Chess{

    private String color = "黑色";

    @Override
    public String getColor() {
        return color;
    }

    @Override
    public void location(Location location) {

    }
}
package test13;

public interface Chess {

    public String getColor();
    public void location(Location location);

}
package test13;

import java.util.ArrayList;

public class ChessFactory {

    private ArrayList chess = new ArrayList();
    //单例模式
    private static ChessFactory chessFactory = null;

    private ChessFactory(){

    }

    //简单工厂模式
    public Chess productChess(String type) throws Exception {
        if(type.equalsIgnoreCase("hz")){
            System.out.println("棋子工厂生产黑子");
            BlackChess hz = new BlackChess();
            chess.add(hz);
            return hz;
        }else if(type.equalsIgnoreCase("bz")){
            System.out.println("棋子工厂生产白子");
            WhiteChess bz = new WhiteChess();
            return bz;
        }else {
            throw new Exception("对不起,没有该颜色的棋子");
        }
    }

    //单例模式
    public static ChessFactory getInstance(){
        if(chessFactory==null){
            chessFactory = new ChessFactory();

        }else {
            System.out.println("重复生成工厂");
        }
        return chessFactory;
    }

    public int getChessNum(){
        return chess.size();
    }

    public ArrayList getChess() {
        return chess;
    }

    public void setChess(ArrayList chess) {
        this.chess = chess;
    }
}
package test13;

public class Client {

    public static void main(String[] args) throws Exception {
        Chess c1,c2,c3,c4;
        ChessFactory cf;
        cf = ChessFactory.getInstance();

        c1 = cf.productChess("hz");
        c1.location(new Location("1,1"));

        c2 = cf.productChess("bz");
        c2.location(new Location("2,1"));

        c3 = cf.productChess("hz");
        c3.location(new Location("3,1"));

        c4 = cf.productChess("bz");
        c4.location(new Location("4,1"));
    }
}
package test13;

public class Location {

    private String location;

    public Location(String location){
        this.location = location;
        System.out.println("棋子位置为"+location);
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public String getLocation() {
        return location;
    }
}
package test13;

public class WhiteChess implements Chess {

    private String color = "白色";

    @Override
    public String getColor() {
        return color;
    }

    @Override
    public void location(Location location) {

    }
}

标签:享元,13,return,String,模式,location,new,public,Location
From: https://www.cnblogs.com/java-six/p/16789306.html

相关文章

  • 10.13
    今日内容1.算法简介及二分法2.三元表达式3.各种生成式/表达式/推导式4.匿名函数5.常见内置函数1.算法简介及二分法1.算法是解决问题的方法,不是所有的算法都很高效,也......
  • 工控资讯 | 众志成城 战“疫”到底,科氏130亿收购Infor,西门子11亿欧元豪购,长城3亿美元
    01新冠疫情武汉封城19天致敬英雄​截至2月10日19时,现有确诊病例40261例,累计死亡909例,累计治愈出院3494例,现有疑似病例23589例。哪有从天而降的英雄,只有挺身而出的凡人!做好......
  • 微信暗黑模式来了!!!
    微信的暗黑模式终于来了,需要大家把微信更新到7.0.12版本。喜欢黑色感觉控友可以更新了。来来来来来来来来来来来来来来来来来来来来来来来来来来来来来来来来来来来来来来来......
  • 2022.10.13 CSP2022 模拟赛三
    Source:JOI2018FinalT2-T5绝了会最后一题不会T2,麻了。美术展览显然的事情:在规定\(A\)的值域\([l,r]\)之后,对于所有\(A_i\in[l,r]\),都选进来一定最优。按\(A......
  • 2022-10-13 uniapp h5端 canvas绘图显示空白
    原因:图片跨域or业务中存在undefined变量,请保证前端img添加了crossorigin="Anonymous"以及后端允许跨域。吐槽:这个问题,真的是。。。。****。嗯,以前做小程序,没出现这种问题......
  • mac mac 虚拟机VMware fusion设置nat模式,使虚拟机下的linux能够上网
    1.点击vmwareFusion>偏好设置>(command+,)网络2.修改网络设置,添加一个vmnetNAT第一步左下方解锁,新增vmnet3,你那里可能是2或者其他数字,无妨;第二部勾选2,3第三步右......
  • 《大话设计模式 Java溢彩加强版》相关主题
    《大话设计模式Java溢彩加强版》读者须知     《大话设计模式Java溢彩加强版》在2022年10月在各大网上书店中有售!源代码与课件下载 《大话设计模式Java溢彩......
  • 闲话 22.10.13
    闲话压位trie怎么实现?哪天写一个好于是今天卡了一天的常数然后lyin十分钟给切了没什么要写的诶今天哦对了今天中午换起床歌了瑞苹不如新宝岛谁有什么很诡异的题来......
  • 10月13日内容总结——算法之二分法、三元表达式和各种生成式及匿名函数、部分常见内置
    目录一、算法简介之二分法(需要写的出来)简介什么是算法二分法二、三元表达式什么是三元表本质?三元表达式语法结构三、各种生成式列表生成式字典生成式集合生成式元组生成器(......
  • 10.13
    学习端口安全技术:即802.1x其目的是为了解决局域网用户的接入认证问题其中认证方式分为两种:1.本地认证2.远程集中认证端口接入控制分为两种:基于端口认证-----------端......