一个java编程题目,类的设计问题

问题描述

今天去面试,得到的题目是:1、从一个文档中读取内容(文档内容为1-10十个数字,一个数字一行),输出到另外一个文档,输出格式为(1,2,3,...,10)2、数据库中存储了10条记录,一列,也是1-10,一个数字一条记录,读出,也输出到一个文档,格式同第一题。题目的要求是:怎么样设计类,使在开发过程中第一题变到第二题的修改部分较少,代码复用率低。附加:如果是输出到文档,改为输出到数据库的话,怎么设计。 学得不精,只想到了用继承来解决这个问题。还有什么别的设计思路呢?

解决方案

public interface Reader { public void reade();}public interface Writer { public void write();}public class DBReader implements Reader {}public class FileReader implements Reader {}public class DBWriter implements Writer {}public class FileWriter implements Writer {}public class Manager{ Reader reader; Writer writer;}这样可以达到reader,writer的任意组合,交给客户端决定
解决方案二:
原则就是高内聚、低耦合。把read、process、write分离开。
解决方案三:
public interface Reader { public void reade(); } public interface Writer { public void write(); } public class DBReader implements Reader {} public class FileReader implements Reader {} public class DBWriter implements Writer {} public class FileWriter implements Writer {} public class Manager{ Reader reader; Writer writer; } 这样可以达到reader,writer的任意组合,交给客户端决定href说的对,企业应该是出于复用性的考虑,建议方法内加入参数!
解决方案四:
桥接模式和策略模式有点,但是桥接模式的context可以有不同的实现类或者子类,但是策略的context只有一个类
解决方案五:
采用继承的话,就可以用模板模式。但我建议采用策略模式。将两种读取数据的方式抽象为一个接口,接口返回List<String>这个接口有2个实现类,这两个实现类实际上就是2个不同的取数算法。 context上下文定义为一个类,这个类中含有相同的逻辑如输出到文档中,如果输出也有不同的方式,也要定义一个接口,同样采用策略模式,不同的实现类,输出到文档一个实现类,输出到数据库一个实现类。context中可以动态注入不同的实现类,从而可以实现算法的运行时替换。
解决方案六:
我认为可以使用桥接模式,因为题目有两个变化的维度,一个是输入,一个是输出。你可以看下桥接模式,应该可以解决这个问题。
解决方案七:
一个interface,两个interfaceimpl。第一个interfaceimpl实现第一题功能,第二个实现第二题功能。再写一个util工具类,负责格式化输入到另一个文档的格式。两个interfaceimp获取数据后调用格式化工具类format的方法。实体类均用面向对象,设每一行为一个属性。 我技术就这样了..拿出来丢人了...
解决方案八:
引用有一个负责读数据的父类A,数据源为文件的一个类继承自这个父类,数据源为数据库的同样继承这个父类 有一个负责转换数据的类X,这里可能不需要转换,但是最好有这个类,专门负责数据加工的,此类应该有两个变量A a和B b有一个负责写数据的父类B,目标为文件的一个类继承自这个父类,目标位数据库的同样继承这个父类 实际调用的时候,通过X来实现 设计模式中可能叫代理模式 描述的好像适配器.两个数据源的转换适配器用处很大. 貌似楼主的问题是设计类属于需求分析阶段.
解决方案九:

解决方案十:
http://dl.iteye.com/upload/picture/pic/82195/2c5ea259-eaa8-362d-9147-3080ebe8beda.jpg
解决方案十一:
有一个负责读数据的父类A,数据源为文件的一个类继承自这个父类,数据源为数据库的同样继承这个父类有一个负责转换数据的类X,这里可能不需要转换,但是最好有这个类,专门负责数据加工的,此类应该有两个变量A a和B b有一个负责写数据的父类B,目标为文件的一个类继承自这个父类,目标位数据库的同样继承这个父类实际调用的时候,通过X来实现设计模式中可能叫代理模式
解决方案十二:
一个类10个属性 搞定这个问题 横竖都能用.部分冗余扩充了拓展空间, 哈哈 当然只能正对这种横竖业务.

时间: 2024-12-21 22:10:43

一个java编程题目,类的设计问题的相关文章

问一个Java泛型与类继承的问题

问题描述 问一个Java泛型与类继承的问题 直接上代码了 //DeviceRepository类 public abstract class DeviceRepository<T extends Device> extends DomainRepository<T> //DeviceEventHandler类第一种写法 public abstract class DeviceEventHandler<M extends Device,R extends DeviceRepos

急求一个java编程!!!

问题描述 急求一个java编程!!! java编程 电话号码查询: 有电话录入.修改.增加.删除,按姓名查询,按电话号码查询,按部门查询,显示所有电话号码信息,打印等功能. 解决方案 http://www.docin.com/p-651608701.html 解决方案二: http://wenku.baidu.com/link?url=ZAaQ8BPeDjmuoS0Z2Mpsr9L1c4RxVLIn3SjARxUliyrtosrbNa_SDgct_SLE6mH5OtznL2y1tYllNruZa

编写一个JAVA的队列类

  根据这些特点,对队列定义了以下六种操作: enq(x) 向队列插入一个值为x的元素; deq() 从队列删除一个元素; front() 从队列中读一个元素,但队列保持不变; empty() 判断队列是否为空,空则返回真; clear() 清空队列; search(x) 查找距队首最近的元素的位置,若不存在,返回-1. Vector类是JAVA中专门负责处理对象元素有序存储和任意增删的类,因此,用Vector 可以快速实现JAVA的队列类. public class Queue extends

给网站添加一个注册表 之 “类的设计”

设计|注册表 做网站时,很多时候要把网页的某些信息保存在网页以外的地方,通过在线编辑这些信息,达到更新网页内容的效果.对于这种情况,以前我们只有使用数据库或者文本文件来处理. 使用文本文件来保存网页信息的方式,是一种最原始的方法,使用起来相当不方便,而且对于信息的检索也是比较困难,更不用说用一个统一的方式来处理不同的网页信息. 使用数据库方式来保存网页信息的方式,是一种比较常见的方法,使用起来相对方便,也可以方便地对信息进行检索.不方便的地方就是每次调用都需要打开一个数据库链接,相当耗费服务器资

Java面向对象基础--类的设计及分析问题的方法---用户登录例子

1.用户登录的示例 首先要做的就是先把功能实现: public class LoginDemo01{ public static void main(String args[]){ if(args.length!=2){ // 应该判断输入的参数个数是否是2 System.out.println("输入的参数不正确,系统退出!") ; // 给出一个正确的格式 System.out.println("格式:java LoginDemo01 用户名 密码") ; Sy

求助!一个java编程

问题描述 写一个程序,它接受10名学生记录(登记号和成绩),并打印分数递减的顺序.如果有就同一学生多条记录,该程序应选择一个记录包含了最高分.该方案应接受一个多行输入的能力.以后每输入行将包含一个学生记录,即一个登记号和一个分数(用连字符分隔).输出应包括的登记号和相应的评分相结合的分数顺序递减.这个怎么做啊?? 解决方案 解决方案二:1.打開JAVAIDE工具.2.開始coding3.編譯3-a有錯誤,修正後回到33-b沒錯誤,測試結果,如果正確擇結束,否則回到2修正.解决方案三:程序还得自己

一个java编程问题

问题描述 public class Twisted {private final String name;Twisted(String name) {this.name = name;}private String name() {return name;}private void reproduce() {new Twisted("reproduce") {public void printName() {System.out.println(name());}}.printName

给网站添加一个注册表 之 “类的应用”

注册表 下面,我们用这个"注册表"类来写一个简单的"计数器"应用,代码如下: pagecount.asp: <!-- #Include File="registry_class_inc.asp" --><%Dim RegSet Reg = New RegistryObjectReg.Path = Server.MapPath("pagecount.xml") Const BaseCount = 8000 '计

java-求做一个Java类的设计的题

问题描述 求做一个Java类的设计的题 Account类:代表一个银行账户 balance属性:代表账户里的金额 deposit方法:向账户中存钱,如果传入的金额大于0,存钱,返回true,否则不存钱,返回false withdraw方法:从账户中取钱,如果余额够,取钱,返回true,如果余额不足,不取钱,返回false display方法:用于查询当前帐户金额 解决方案 public class Account { private double balance;//定义账户的金额 /** *