MyException - 我的异常网
当前位置:我的异常网» J2EE » 新手来求教之四_一些设计上的疑惑,该如何处理

新手来求教之四_一些设计上的疑惑,该如何处理(2)

www.MyException.Cn  网友分享于:2013-04-09  浏览:12次

------解决方案--------------------
问题1:因为你对问题看法是面向过程的,所以你设计类只是为了实现方法。当你以面向对象的观点看待这个世界时,你就会发现..其实这只是两种不同的世界观- -!没有什么所谓的好与不好
问题2:接口是对象的一个方面的表现,这也是面向对象的观点。举例来说:自行车有可以被骑这个特性,所以设计的时候可以这样public class Bicycle implements Ridable,Ridable这个接口从一个侧面描述了自行车。同样也有别的东西可以被骑,虽然骑法不同...这和抽象类的思想就不一样,估计不会有人设计出这样一个抽象类——可以骑的东西...
问题3:没看懂你在问什么- -!
PS:这里能贴UML图么?用语言描述对象是在很累...
------解决方案--------------------
第一个问题。对于纯粹作为方法集的类,全静态方法很少用(不是不能用,只是太怪异,不符合java的语言习惯),一般来说是用单例模式,这个挺简单的,自己搜一搜去。

第二个问题。结合抽象类和接口也可以啊,抽象类首先实现接口,子类再去继承抽象类,OK。

第三个问题。你的工厂模式走歪了。一般来说工厂是为了将获得实例的过程与接收对象彻底分离而设立的,同时还兼有隐藏复杂的初始化过程的作用,比如:
Java code

UserDAO dao = UserDAOFactory.getInstance().createDAO();

------解决方案--------------------
如果觉得自己的设计思路不行的,建议去学下java设计模式
下面是我对你的问题的看法
1: static的类,对象,方法。在你的工程启动的时候他就已经占有了他的内存空间,不管你是否在后面的操作能否有用到。换句话说过多的static类,会加大你的工程启动时的内存占有量。虽然static方法省去了实例的过程以及对象的操作。
2:接口和抽象类,他们的区别只是定义上,接口算得上是一个特殊化的接口(只是里面的所有方法都是虚的),java语言的特点是,一个类只能继承一个抽象类,实现多个接口。所以有了许许多多的接口,不过你开发久了你马上就会觉得接口的设计方式比抽象类要优雅的多。C++中就没有接口,它可以继承多个抽象类
3:建议不要自己去写工厂类,因为正常开发人员的水平都是有限的,考虑不足。用spring去控制你的类对象,你写的工厂类只有控制产生而已,类对象诞生之后,你的工厂类就没有去管对象了,而实际上,工厂类应该是管理类对象整个的生命周期,看看spring的Factory
------解决方案--------------------
我也是新手,我做设计的时候遵循的原则是这样:
1.所有的实现类都必须实现某一特定接口
2.为了提高复用程度,用某一抽象类作为support,实现类可以继承此抽象类

所以最后的格局是:
interface MyInterFace{
}

class abstract MySupport implements MyInterFace{
}

calss ImplementClass extends MySupport{
}

这是我看structs2的app example 时发现的感觉很好用,就一直这样用
------解决方案--------------------
学习一下

抽象类中可以实现方法,因此,如果一个类的某些动作需要按照某种顺序组合,那么就可以用抽象类了,接口做不到
接口定义了类可以实现的动作,不是强制性的(不实现接口),或者表述为:抽象类与子类比接口与实现类之间的关系更紧密

菜鸟一个,仅此浅识
------解决方案--------------------
不一定要切用模式地
------解决方案--------------------
1, 举个例子说 验证码的生成, 如果只有一种生成方法,这种设计 无可厚非, 但是如果存在多种生成办法这样 就不好了,,
过程式设计会用两个static 函数来表示两种不同的验证码生成方法:

public static Code generate1();

public static Code generate2();

如果是面向对象设计,
interface CodeGenerate{
Codge generate();
}

class ConcreteGenerator1 implements CodeGenerate{};
class ConcreteGenerator2 implements CodeGenerate();
 
这样设计的好处是可扩展性高,符合 O-C原则

2, 接口通常代表一种 职责,或者说某一个方面的功能, 抽象类 经常用于实现一些共有的代码, 面向interface 的编程的好处,同样也是能够做出可扩展性的设计

3, factory 就是为了把一类对象的创造放到factory里面,工厂会因为增加新的对象类型而变化, 而且仅此会导致factory变化, 所以一边 factory不应该有太复杂的代码. 我很少看到switch多得很难维护的情况,顶多10几种,如果多了,,那么就要考虑别的设计策略 




------解决方案--------------------
一、 楼上的有人讲过,Static 的东西是程式一启动就会生成一个实例在内存中,如果静态的东西太多,会占用一些内存资源。除此之外,还有一个问题要注意,静态变量的值问题。

三、你的意思是一个工厂,根据一个代号什么的,取出相应的实例。
这样做是对的,但是看起来很庞大。我想这是因为你的实例化对象的方法的问题,一般工厂都会用反射来实例化对象,所有的实例,都只传入名称及参数就可以了。应该不会用到Switch。
------解决方案--------------------
去看看《代码大全》
------解决方案--------------------
静态如果可以用那就用,面向对象未必好,面向过程始终都占有一席之地。
模式不是一层不变,以人为本,应需而变。死忠对象,无异蠢才。
苍茫宇宙,皇者回归。技术之巅,谁与争锋。
------解决方案--------------------
问题1:我设计的常用模块(比如控制台打印、字符集转换过滤、格式化日期、日志文件读写、properties文件读写、javaMail、jsonString读取、excel读取、验证码生成)等等模块经常用私有化构造方法+全部静态化方法来设计这些工具类,这样使用起来就是类名+方法名来使用,请问这种设计方法有何利弊?(tij里曾说过:当你的程序充斥着过多的static时,或许你该想想换个设计了,且实际调用起来越看越像面向过程,虽然用起来时确实方便,不用新建实例)
部分静态方法还是可以的,比如:格式化日期、properties文件读写,控制台打印,字符集转换过滤等等。
不过大量使用静态方法确实是设计不够优化的表现,尤其是新手,经常会碰到一段代码不知道怎么才能大家共享调用,于是就静态之。

文章评论

Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
 程序员的样子
程序员的样子
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
每天工作4小时的程序员
每天工作4小时的程序员
那些争议最大的编程观点
那些争议最大的编程观点
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序员都该阅读的书
程序员都该阅读的书
编程语言是女人
编程语言是女人
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
程序员的鄙视链
程序员的鄙视链
漫画:程序员的工作
漫画:程序员的工作
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员应该关注的一些事儿
程序员应该关注的一些事儿
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
10个调试和排错的小建议
10个调试和排错的小建议
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
为什么程序员都是夜猫子
为什么程序员都是夜猫子
如何成为一名黑客
如何成为一名黑客
总结2014中国互联网十大段子
总结2014中国互联网十大段子
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
程序员和编码员之间的区别
程序员和编码员之间的区别
Java程序员必看电影
Java程序员必看电影
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
鲜为人知的编程真相
鲜为人知的编程真相
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序员必看的十大电影
程序员必看的十大电影
我的丈夫是个程序员
我的丈夫是个程序员
旅行,写作,编程
旅行,写作,编程
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
代码女神横空出世
代码女神横空出世
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有