学过了java se,学过了java ee也学过了各种框架。在我们学的时候,很多时候我们都会听到设计模式这么一个概念。当然我们也只是了解听说而已。在自己的实际开发之中,还是会遇到很多设计问题,这是因为我们没有经验复用。实际上这些设计的问题,前人已经总结好了经验来等待我们的学习,它的名字叫设计模式.
这里我们使用一个简单的例子e-r图来源

用软件工程的思想和流程来指导我们开发的时候,我们经历了需求分析,概要设计,详细设计(简略的说)。但是在我们详细设计的时候,很多时候都是根据数据库的表来对应实体类,利用三层架构来创建我们的dao层,service层,以及controller层。但是后来我发现仅仅如此是不够的,虽然这样的架构能够解决我们很多简单的业务逻辑,但是比如说如果前端需要的数据如果来源于多个表,我们的返回类型就限制住了我们的功能实现,这时候我们就需要去修改我们的类型,重新设计我们的类。‘
在这里我们举一实际的例子。
最开始我们使用mybatis的时候,我们使用生成工具能够迅速的生成mapper层也就是我们的持久层。最开始的时候,它十分的好用增删改查单表十分方便。但是我们开始稍微复杂的逻辑的时候,比如我们需要查询某个同学的完整信息(包括个人信息、所属班级、选择的课程以及该课程对应的老师)我们的学生类,班级类,课程类以及老师类都不能够独立的完成这个功能,那么想想我们应该怎么做呢?
1.继承
我们可以创建一个新的类,继承。当然这个方法肯定是不行的。不符合我们oo的设计,班级和学生怎么可能是继承关系嘛~~。当然在有些时候继承确实可以,但是因为继承之后,就破坏了封装。所以我们能少用继承就不要用继承。
2.组合
我们可以创建一个新的类叫做StudentForm,在这个类里面包括了四个成员变量,分别是班级、学生、课程和教师。这样的话,我们在没有改变原来的代码的基础之上,我们扩展出了新的类,方便我们功能的实现。
当然上面说不上什么设计模式,如果说算的话,算策略模式?初学不能肯定归属哪一类。但是可以肯定的是符合设计模式里面的一个原则
少用继承,多用组合
我们肯定都是听过的,但是我们从来就没有真正的去理解。唯有在真正的设计之中运用到了,才能够体会到其中的精妙之处。
后面我会一天或者两天更新一个设计模式,啦啦~~~
让我们一起学习设计模式吧
网友评论