2016-04-27 104 views
0

我想构建一个只能由GameController修改的类,但可以被任何类访问。我应该研究什么样的设计模式来完成这个?我在想什么OOD设计模式?

*我在Java中构建它,而GameController是我的Main类。所以,我无法在GameController类中创建一个私有实例。希望是那么简单。

+1

只是让吸气剂,没有设置器,即只读。这是** Encapsulation **,不是模式。 –

+1

我能想到的显而易见的解决方案是让界面或抽象类定义要访问的行为,然后在您的'GameController'中实现一个私有类来实现该接口。 – Dolda2000

+0

@ChrisWohlert,获取者不确保属性不可修改。根据财产的类型,您可能还需要制作防御性副本。 –

回答

2

没有“设计模式”。相反,只需使用Java的访问修饰符,即提供public获取者,但只提供包专用的设置者或其他增变器方法(假定GameController使用的类位于相同包中)。

0

您可以创建一个界面层次结构,其中顶层是只读的,下一个层次添加了设置者。 该类实现读写接口。 控制器获取带有可写接口的实例,其他所有分类只读接口。

0

但可以访问任何类? 我想你在这里试图实现的是每个类访问和共享Controller类的相同实例。你可以去用MVC模式,但如果你是那为时已晚,需要以某种方式共享相同的情况下,你可以使用单个图案

public class getGame{ 

private static GameController gameController; 

public static GameController getController(){ 

if(gameController==null){ 
gameController = new GameController(); 
} 

return gameController; 
} 

} 

你不需要担心上面类创建实例,因为每场去标记为静态。