在QQ游戏里,有一个QQ农场与牧场,在农场中有多种植物,在牧场中有多种动物,假设你是五级农、牧场主,试指出其有多少个类,并具体设计。所需要植物与动物的信息根据实际情况自行设计;根据植物与动物的关键字查找到相应的信息情况,并屏幕打印 ?
解决方案 »
- 多线程问题 wait() notifyAll(); 出错
- poi 設置execl自動調整列寬
- 自己写的模拟退火方法求解八皇后问题, 大家帮看看, 下周交作业
- scanner的问题
- 添加数据后,jtable怎么才能更新?
- ajax json.js 求助……
- public static void main(String [] args)中的string[] args是用来干什么的?
- java里如何控制格式化字符串
- 求助 --帮帮忙,谢谢 -_-
- 谁能给在下一个多线程的例子,最好是比较通用而且全的,能够同时控制几个线程?小弟这块不熟
- 这是什么东东,不清楚,有清楚的解释下!!!谢谢了
- 在netbeans环境下的JAVA倒计时器怎样做
牧场
{
牧场ID
牧场名称
}农场
{
农场ID
农场名称
}植物类型表
{
植物类型ID
植物类型名称
}植物表
{
植物ID
植物高低(植物属性字段不一一列举)
植物类型ID
坐标
}动物类型表
{
动物类型ID
动物类型名称
}动物表
{
动物ID
动物胖瘦(动物属性字段不一一列举)
动物类型ID
坐标
}场主
{
场主ID
场主类型ID
}场主类型表
{
场主类型ID
场主类型
}这些表差不多能够表示了吧复杂一点的话三张表就行
场主{
场主ID
场主类型
牧场ID
农场ID
}场{
场ID
类型
名称
动植物ID
}动植物{
动植物ID
类型
名称
坐标
}这样的话后面维护就比较乱了
public class User:应用程序类
abstract class ProductManager:用于增删改查产品,这个类中应当有crud相应的方法
public class DBManager:用于操作数据库abstract ProductFactory:抽象工厂类,用于创造抽象产品
abstract Product:抽象产品,就目前而言,其下面的产品为Plant和Animal
abstract Plant:植物抽象类
abstrcat Animal:动物抽象类他们的具体实现如下(好像CSDN上面插图真不容易,等会插个图试试):
public class User{
private ProductManager productManager;
private ProductFactory productFactory;//具体应用时,应当是ProductFactory的具体子类
//..应用程序具体的操作
}public class ProductManager{
private DBManager dbManager;//用于完成持久化操作,可能用在该类中的某些方法中
public void add(Product product){}
public void delete(Product product){}
public void modify(Product product){}
public Product find(int id){}//查找时,可以传递其它类型的消息,也就是不同类型的参数
}abstract class ProductFactory{//抽象工厂
//可以定义一些公共属性或公共方法用于子类继承
//该类的实现应当是创建具体产品(植物或动物实例)的具体工厂
}abstract class DBManager{
//完成实体的持久化的抽象方法
}abstract class Product{
//可以定义一些公共属性和公共方法供子类使用
}
abstract class Plant extends Product{
//可以定义不同植物类的一些公共属性或公共方法供子类使用
}
abstract class Animal extends Product{
//可以定义不同动物类的一些公共属性或公共方法供子类使用
}
需要说明的是:楼主可以用UML工具把上面的类的关系画出来,从图中就可以清楚的看到,这只是一个抽象模型。该模型提供了应用程序的扩展性,具体如下:
(1)DBManager是抽象类,具体的实现可以按需要具体实现该DBManager.比如,我们可以使用不同的数据库,但是DBManager隐藏了底层的具体实现,因为我们可以使用不同的数据库来实现。
(2)ProductFactory类是抽象类,此处用到抽象工厂方法,该抽象类的具体实现应当根据产品种类来确定有哪些具体的工厂类,比如现在应当有两个具体的工厂类:PlantFacotry类和AnimalFactory类。那为什么不用一个具体的类来创建全部的产品呢?我认为:如果我们加入一种产品,这将会导致我们修改该工厂类,以便创建新的产品,这样,加重了维护的难度。而如果用一个工厂类对应一种产品的话,那么当我们加进来一种产品,我们只用再加进一个工厂类就可以了,而不用去改已经存在的类,这样便于程序的维护和升级。可以去看看抽象工厂。但是也还有很多其它的方法来实现一个抽象工厂,比如通过配置文件等。
(3)Product类对所有的产品进行的一次抽象,这样,我们就可以把不同的产品(植物或动物 或者其它种类)加入到已有系统而不改变已有的系统,而且也符命面向接口编程的思想。
(4)Plant类和Animal类也是抽象类,理由同(3),这样,我们就可以在以后的升级中任意的加入新的Plant或Animal而不改变已有的系统,这样也完成了楼主你所说要加入新的Plant和Animal的想法。总之,以上是我个人的一些想法,如有更好的修改或扩展,希望和大家继续讨论。