从项目中谈设计模式

      前段时间刚做过了一个小项目——“在线考试测评系统”,整个项目都是在老师指导下完成的。在完成的过程中,困惑很多,为什么老师要定义那么多的类啊?总共都有好几十个了都,看起来真有点吓人啊,而且还定义出了一些“莫名其妙”的接口(ExamSerivce等接口),为何不干脆直接用类实现,多简单啊……种种疑惑伴随着我做整个项目的始终,终日郁郁寡欢。

   项目的大致结构图如下:(此处不作太多解释)本地版

     随着项目逐步成型,我也有了感觉,开始一些不可思议,却开始慢慢的变成了理所当然,顺理成章。那么多类的定义原来是为了分离各个业务的实现,从中体现出了面向对象程序设计的思想,“一切皆对象”。最后在完成项目网络版本时,原来只需添加了一个新的类ExamServiceAgentImpl来实现ExamServiceImpl接口,于是基本不用改动其他地方就安然完成了网络版,此时的我似乎明白了为什么要定义这个ExamServiceImpl接口了,原来这是为了后面的开发做准备啊。

网络版的实现结构图(部分):

 

      虽然项目完成了,但是还有些地方似乎感觉不是那么理所当然。最近正在看了“设计模式”,在我看逐步看的过程中,让我对之前的这个项目有了更进一步的理解,不由得感叹道:“原来如此,原来如此……”,好多当初认为的那么不合理、不理解,现在才明白那是理所当然的。因为当初用到了好多设计模式的内容,如:单例模式、工厂方法、抽象工厂方法、装饰器模式等。如:本地版和网络版就是最好的说明,其中ExamServiceImpl接口为此而定义的,这就用到的是“抽象工厂模式”。抽象工厂模式就是为创建一组相关类或相互依赖的对象提供一个接口,而且无须指定它们的具体类。若要实现本地版或网络版时只需在客户端代码中稍微改动,就立即完成了网络版和本地版的切换。啊,看来设计模式真是重要。

      对设计模式的学习提出一点个人见解吧。如果你纯粹的拿着一本设计模式的书来按步就班的学习,看完这本书后,你一定会发现你什么也没看懂,就和没看一样(曾有人这么说过)。我要说的是,在看每个模式的时候一点要结合具体的实例来理解掌握它的好处以及所用场所,比如说把一些相关的模式拿到做过的一些项目中重新来看,你会发现你对做过的项目又有了新的认识,这样学习设计模式的效果更好。

 

 

Java是一种面向对象的编程语言,设计模式可以帮助我们更好地编写面向对象的代码。在JavaWeb项目中,设计模式可以帮助我们解决一些常见的问题,比如复杂的业务逻辑、代码重用、可扩展性等等。 下面是一些常见的设计模式在JavaWeb项目中的使用: 1. MVC模式:MVC模式是一种常见的设计模式,它将应用程序分为三个部分:模型、视图和控制器。在JavaWeb项目中,我们可以使用MVC模式来分离业务逻辑和用户界面,并且可以更容易地进行修改和维护。 2. 工厂模式:工厂模式是一种创建型设计模式,它可以帮助我们更好地组织代码并提高代码的可复用性。在JavaWeb项目中,我们可以使用工厂模式来创建对象,并且可以根据需要动态地创建不同的对象。 3. 单例模式:单例模式是一种创建型设计模式,它保证了一个类只有一个实例,并提供了一个全局访问点。在JavaWeb项目中,我们可以使用单例模式来管理共享资源,比如数据库连接池。 4. 观察者模式:观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,它的所有依赖对象都会得到通知并自动更新。在JavaWeb项目中,我们可以使用观察者模式来实现事件驱动的编程。 5. 装饰器模式:装饰器模式是一种结构型设计模式,它允许我们动态地添加或修改一个对象的功能。在JavaWeb项目中,我们可以使用装饰器模式来扩展一个类的功能,而不需要修改它的原始代码。 当然,在JavaWeb项目中还有很多其他的设计模式可以使用,具体使用哪些设计模式需要根据具体的情况而定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xcbeyond

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值