单实例设计模型,从字面上的理解就是,某个类只能创建一个类的对象,这样的话就避免了重复创建类的对象而产生了某些数据的变化带来的不确定性。就比如说在我们做线程小游戏时,当然这时会用到的数据有很多,如果我们不加以分类的话,必然会使不同数据分在不同的类中。这个时候我们如果需要在某个类当中需要调用另外一个类的某个对象或者数据时就得把这个类传过来才行。但是我们考虑到的是,如果我们的工程中类比较多时,而且需要传的值比较多时,这时我们的类的创建对象的过程就会变得很复杂。而且到最后我们可能会被自己的代码弄得晕头转向,这个问题我也在此前碰到过。所以,下面就简单的介绍单实例设计模型。
在这里我创建一个数据类Data:在这个类中,所有的数据都必须要通过类的get方法来得到。
public class Data {
//单实例设计模式
private static Data instance;
private int screenWidth=600;
private int screenHeight=500;
//构造器设为私有,在其他类中不能创建
private Data(){
}
public int getScreenWidth() {
return screenWidth;
}
public int getScreenHeight() {
return screenHeight;
}
//所有外部类通过该方法访问同一个实例
public static Data getInstance() {
//若instance为空,则创建一个新的Data的实例对象,否则返回已经创建好了的Data对象
if(instance == null){
instance = new Data();
}
return instance;
}
}
简单的总结来说就是单实例模型需要一个私有的构造器,里面个静态的方法来返回静态的Data对象,而在Data里面的属性、数据就要在类中实现get方法以便在其他类调用。这里我创建一个Frame。
public class UI {
JFrame jf = new JFrame();
//获取Data对象,然后通过data来获取窗体的宽度和高度
Data data = Data.getInstance();
public void init(){
jf.setSize(data.getScreenWidth(),data.getScreenHeight());
jf.setVisible(true);
}
}
说了这些,其实这个就是单实例模型最简单的应用。
其实除了这个方法,还可以用static关键字来实现。不过static关键字的方法跟上面有异曲同工之妙。只不过,后者更多的是方法的实现。而前者是数据的传递上的。
下面还将介绍一种简单的设计模型:
工厂设计模型。这个模型怎么说呢,跟上面的单实例设计模型有相似也有区别。这里创建Student和Teacher类均实现Person接口来说明。而在另外一个类Test当中我们能够用两个静态的方法来返回这两个类的实例。
public class Test{
public static Person getTeacher(){
return new Teacher();
}
public static Person getStudent() {
return new Student();
}
}
这是我们在主函数的类中就能够调用Test类的静态方法来获取Teacher和Student类的对象。简单的说明其实很简单的,重要的是我们在做游戏时能把他们运用起来的话,那么就会对我们的代码的可读性大大的提高。
分享到:
相关推荐
各种java设计模式版本打包下载,学习java必备材料
关于JAVA模型设计的教程代码,每个模型的代码都齐全,让你更容易学习JAVA各种模型
什么是领域(Domain)? 我们所做的软件系统的目的都是来解决一系列问题,例如做一个电商系统来在线销售自己企业的产品;做一个灰度发布平台来提升服务的质量和稳定性。任何一个系统都会属于某个特定的领域,例如: ...
本文主要介绍Java 23种设计模型,这里整理了详细的资料,及实现各种设计模型的示例代码,有需要的小伙伴可以参考下
解释结构模型算法的JAVA设计实现,需要的下!
java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰java程序员,本文试图揭开java内存模型神秘的面纱。本文大致分三部分:重...java内存模型的设计目标,及其与处理器内存模型和顺序一致性内存模型的关系
java设计模式_四大常用架构_迭代模型_并行排序算法
阿里巴巴专家讲座——java内存模型与并发技术。 主要内容: 学习java并发理论基础:Java Memory Model 学习java并发技术基础:理解同步是如何工作 分析程序什么时候需要同步 几个典型的并发设计策略
本文主要介绍了java 单例模式,单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在,希望能帮助有需要的同学
JAVA外文文献翻译基于Java技术的Web应用设计模型的比较研究.pdf
java毕业设计——基于java的动力节点系统的设计与实现(源码+数据库).zipjava毕业设计——基于java的动力节点系统的设计与实现(源码+数据库).zipjava毕业设计——基于java的动力节点系统的设计与实现(源码+数据库)....
Java 内存模型的抽象 4 重排序 6 处理器重排序与内存屏障指令 7 happens-before 10 重排序 13 数据依赖性 13 as-if-serial 语义 13 程序顺序规则 15 重排序对多线程的影响 15 顺序一致性 19 数据竞争与顺序...
(本科毕业设计)解释结构模型的Java实现 我的本科时候的毕业设计
基于java技术的web应用设计模型的比较研究-外文文献翻译本科论文.doc
该资源是为河海大学水文预报课的课程设计编写的程序,使用JAVA编写,已经封装成exe软件,因此无需配置Java环境,解压缩后只要不移动里面的文件夹,就能直接运行。注意是2016年时候的,与现在课设内容可能不同了。 ...
JAVA的21种设计模式,对面向对象很有帮助,我是用.net的,有很多可以从里面借鉴过来用!
面向高负载网站的Java技术设计模型,学习WSJ.com如何利用Java(TM)技术为70万订户提供服务并每天处理数百万页 面浏览
Java内存模型的抽象 重排序 处理器重排序与内存屏障指令 happens-before 重排序 数据依赖性 as-if-serial 语义 程序顺序规则 重排序对多线程的影响 顺序一致性 数据竞争与顺序一致性保证 顺序一致性内存模型 同步...
详细介绍Java内存,ava线程之间的通信对程序员完全透明,内存可见性问题很容易困扰java程序员,本文试图揭开java内存模型神秘的面纱。...java内存模型的设计目标,及其与处理器内存模型和顺序一致性内存模型的关系。