`
阅读更多
       单实例设计模型,从字面上的理解就是,某个类只能创建一个类的对象,这样的话就避免了重复创建类的对象而产生了某些数据的变化带来的不确定性。就比如说在我们做线程小游戏时,当然这时会用到的数据有很多,如果我们不加以分类的话,必然会使不同数据分在不同的类中。这个时候我们如果需要在某个类当中需要调用另外一个类的某个对象或者数据时就得把这个类传过来才行。但是我们考虑到的是,如果我们的工程中类比较多时,而且需要传的值比较多时,这时我们的类的创建对象的过程就会变得很复杂。而且到最后我们可能会被自己的代码弄得晕头转向,这个问题我也在此前碰到过。所以,下面就简单的介绍单实例设计模型。
       在这里我创建一个数据类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类的对象。简单的说明其实很简单的,重要的是我们在做游戏时能把他们运用起来的话,那么就会对我们的代码的可读性大大的提高。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics