为什么要提倡"Design Pattern"呢?根本原因是为了代码复用,增加可维护性。那么怎么才能实现代码复用呢?OO界有前辈的几个原则:"开-闭"原则(Open Closed Principal)、里氏代换原则、合成复用原则。设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。
一、"开-闭"原则
此原则是由"Bertrand Meyer"提出的。原文是:"Software entities should be open for extension,but closed for modification"。就是说模块应对扩展开放,而对修改关闭。模块应尽量在不修改原(是"原",指原来的代码)代码的情况下进行扩展。那么怎么扩展呢?我们看工厂模式"factory pattern":假设中关村有一个卖盗版盘和毛片的小子,我们给他设计一"光盘销售管理软件"。我们应该先设计一"光盘"接口。如图:
而盗版盘和毛片是其子类。小子通过"DiscFactory"来管理这些光盘。代码为:
public class DiscFactory{
public static 光盘 getDisc(String name){
return (光盘)Class.forName(name).getInstance()
}}
有人要买盗版盘,怎么实现呢?
public class 小子{
public static void main(String[] args){
光盘 d=DiscFactory.getDisc("盗版盘")
光盘.卖()
}}
如果有一天,这小子良心发现了,开始卖正版软件。没关系,我们只要再创建一个"光盘"的子类"正版软件"就可以了。不需要修改原结构和代码。怎么样?对扩展开发,对修改关闭。"开-闭原则"
工厂模式是对具体产品进行扩展,有的项目可能需要更多的扩展性,要对这个"工厂"也进行扩展,那就成了"抽象工厂模式"。
二、里氏代换原则
里氏代换原则是由"Barbara Liskov"提出的。如果调用的是父类的话,那么换成子类也完全可以运行。比如:
光盘 d=new 盗版盘()
d.卖()
现在要将"盗版盘"类改为"毛片"类,没问题,完全可以运行。Java编译程序会检查程序是否符合里氏代换原则。还记得java继承的一个原则吗?子类overload方法的访问权限不能小于父类对应方法的访问权限。比如"光盘"中的方法"卖"访问权限是"public",那么"盗版盘"和"毛片"中的"卖"方法就不能是package或private,编译不能通过。为什么要这样呢?你想啊:如果"盗版盘"的"卖"方法是private。那么下面这段代码就不能执行了:
光盘 d=new 盗版盘()
d.卖()
可以说:里氏代换原则是继承复用的一个基础。
三、合成复用原则
就是说要少用继承,多用合成关系来实现。我曾经这样写过程序:有几个类要与数据库打交道,就写了一个数据库 *** 作的类,然后别的跟数据库打交道的类都继承这个。结果后来,我修改了数据库 *** 作类的一个方法,各个类都需要改动。"牵一发而动全身"!面向对象是要把波动限制在尽量小的范围。
在Java中,应尽量针对Interface编程,而非实现类。这样,更换子类不会影响调用它方法的代码。要让各个类尽可能少的跟别人联系,"不要与陌生人说话"。这样,城门失火,才不至于殃及池鱼。扩展性和维护性才能提高
理解了这些原则,再看设计模式,只是在具体问题上怎么实现这些原则而已。张无忌学太极拳,忘记了所有招式,打倒了"玄幂二老",所谓"心中无招"。设计模式可谓招数,如果先学通了各种模式,又忘掉了所有模式而随心所欲,可谓OO之最高境界。呵呵,搞笑,搞笑!
这是我的一点心得,大家可能理解得更深刻。还望指教!
第一阶段内容 Java设计和编程基础(OOD和OOP)主要内容
涉及技术知识点
完成目标
Java语言基础
1.Java基本概念 2.Java环境搭建 3.搭建Eclipse开发环境 4.基本类型 5.变量,运算符,表达式 6.分支语句,循环语句 7.数组,数组应用,行业规范。 8.双色球抽奖程序,实现权限管理命令
熟悉jvm/jre/jdk等基本概念、掌握java和eclipse工具的安装、掌握java基本知识的应用
Java面向对象
1.类、对象、属性、方法、构造器 2.封装、继承、多态 3.重写、重载 4.访问权限控制符 5.this和super、static、final 6.抽象类和接口,内部类 7.单例设计模式 8.模板设计
理解面向对象的思想和概念、学会面向对象分析方法、掌握类,对象,继承,多态的使用
JavaSE核心类库
1.Java核心类 2.Java字符串、日期处理 3.包装类、集合、数据结构 4.异常和异常处理 5.Java IO、NIO、多线程编程 6.线程同步机制、并发包 7.JAVA网络编程 8.Java泛型 9.Java反射机制
掌握java核心类库的应用、掌握异常处理,io流对文件读写、熟悉java泛型和反射技术的应用
Java分析与设计
1.设计原则 2.设计模式 3.常见算法 4.Java8新特性 5.Maven使用 6.SVN版本管理
掌握面向对象分析和设计方法、熟悉常用设计模式、掌握maven和svn工具的使用
第二阶段内容 数据库技术和Web前端技术
主要内容
涉及技术知识点
完成目标
数据库开发
1.Oracle安装和管理 2.SQL语句 3.SQL语句原理 4.SQL语句优化 5.表、表设计原则 6.视图、序列、索引 7.Oracle数据字典 8.Oracle 数据库PL/SQL开发 9.存储过程、触发器、游标等 10.数据库设计原则 11.SQL优化技巧和原则 12.MySQL数据库安装 13.MySQL数据库维护 14.MySQL集群和读写分离
熟悉数据库的安装和使用、掌握数据库设计原则和方法、学会存储过程和触发器的应用
Web前端技术
1.XML语法、DTD和Schema 2.XML解析,DOM/SAX/DOM4J 3.XPATH技术应用 4.HTML5(H5)基本文档结构 5.标题、图片标记、链接、列表、表格标记 6.表单标记 7.CSS基础语法 8.CSS文本、列表、表格样式 9.CSS盒子模型 10.CSS浮动布局、定位 11.JavaScript语言基础 12.JavaScript闭包和自执行 13.JavaScript DOM编程 14.JavaScript事件模型 15.Window对象模型 16.HTML5画布、Web存储 17.地理定位、音频/视频、拖放 18.WebSocket技术等 19.CSS3边框、背景、文本效果 20.CSS3字体、动画等
掌握使用html,css进行前端界面的设计、掌握对javascript语言的使用、掌握websocket技术的使用
JDBC技术
1.JDBC 核心API 2.CRUP *** 作 3.Statement应用 4.PreparedStatement应用 5.预防SQL注入攻击 6.事务安全控制 7.数据库高并发控制 8.批处理技术 9.DAO封装模式 10.dbcp、c3p0等连接池应用
掌握jdbc开发api、掌握java对数据库的访问方法、掌握使用安全的数据库访问方法、学会dao模式的封装
jQuery技术
1.基本语法 2.选择器 3.元素选择 4.属性 *** 作 5.文档 *** 作 6.CSS *** 作 7.动画效果 8.jQuery 插件
熟悉jquery基本语法、选择器和各种处理函数、掌握对样式的增删改处理和样式处理、掌握如何自定义动画
easyUI/Bootstrap等技术
1.Menu菜单 2.Layout布局、Panel面板 3.Tabs 标签页 4.5.Tooltip提示框、Searchbox搜索框 6.Pagination 分页、Draggable可拖动 7.8.消息框、对话框 9.日历、日期时间、Slider滑块 10.Treegrid树形网格 11.Linkbutton 链接按钮 12.Bootstrap CSS 13.Bootstrap布局组件、Bootstrap插件 14.Bootstrap编辑器 15.highcharts图表组件 16.Ajax作用和原理 17.XMLHttpRequest对象 18.Ajax设计模式 19.JSON技术及Ajax应用
掌握bootstrap布局搭建和应用、熟悉easyui的作用和使用方法、掌握easyui的常用组件的使用
第三阶段内容 Java Web技术
主要内容
涉及技术知识点
完成目标
JSP &Servlet技术
1.Tomcat配置和部署 2.Servlet生命周期 3.Servlet编写规范和配置 4.中文接收乱码处理 5.Servlet过滤器和监听器 6.Servlet+DAO工厂模式应用 7.JSP 基本语法 8.JSP标记应用 9.JSP内置对象request、session、application、exception等 10.JSTL和 EL表达式 11.JSP新特性 12.MVC设计模式
掌握tomcat环境的安装和使用、熟悉servlet开发规范和相关概念、掌握session和cookie 状态管理技术。
Spring框架
1.Spring IOC概念 2.ApplicationContext\Factory 3.IOC对象创建和生命周期 4.IOC注入技巧 5.对象高级装配 6.组件扫描特性 7.Spring JDBC支持 8.Spring 事务及安全管理 9.Spring MVC框架 10.Spring国际化 1112.SpringAOP原理、AspectJ 13.Spring Security 14.Spring整合Shiro
熟悉spring模块结构和作用、掌握如何对组件对象进行参数注入、掌握spring 声明式事务处理、掌握spring 安全和 shiro权限控制
SpringBoot/SpringCloud框架
1.SpringBoot Servlet 2.SpringBoot过滤器 3.SpringBoot监听器 4.SpringBoot拦截器 5.SpringBoot启动加载 6.SpringBoot数据库连接 7.SpringBoot多数据源 8.SpringBoot动态数据源 9.SpringBoot事务控制 10.SpringBoot Shiro 权限管理 11.SpringBoot JDBC访问数据库 12.SpringBoot MyBatis访问数据库 13.SpringCloud分布式配置管理 14.SpringCloud服务注册
了解SpringBoot和SpringCloud框架的结构和作用、掌握SpringBoot如何进行权限管理、熟悉SpringCloud分布式配置的应用、熟悉SpringCloud如何发布服务
MyBatis框架
1.MyBatis体系结构 2.SqlSession的使用 3.MyBatis映射基础 4.DQL 映射,DML映射 5.resultType/resultMap结果映射 6.Mapper映射器 7.MyBatis分页原理和优化 8.高级动态SQL映射 9.多表关联映射 10.Spring和MyBatis整合
掌握mybatis开发环境的搭建、了解mybatis框架体系结构和原理、掌握spring和mybatis的整合应用
SSH框架
1.Struts2结构和控制流程 2.Struts2 Action应用 3.ActionContext和ServletActionContext 4.Aware接口注入 5.Interceptor拦截器原理 6.Interceptor自定义应用 7.内置Result原理 8.常用Result组件原理和使用 9.dispatcher、redirect、chain、redirectAction、stream、json等 10.ValueStack原理和OGNL应用 11.Struts2 标记库、Struts2 扩展 12.Struts2和Spring整合应用 13.Hibernate Session API 14.Hibernate实体映射技术 15.Hibernate 关联映射技巧 16.HQL查询、Criteria查询、Native SQL查询 17.延迟加载、持久化、缓存技术 18.SSH整合应用
熟悉struts2结构原理和处理流程、了解valuestack组件的结构和原理、了解ognl技术在valuestack中的应用、熟悉使用ssh整合技术开发
NoSQL技术
1.Redis原理 2.Redis命令 3.Java Redis API 4.Redis 字符串 *** 作命令 5.Redis 哈希 *** 作命令 6.Redis列表 *** 作命令 7.Redis集合 *** 作命令 8.Redis 有序集合 *** 作命令 9.Redis事务处理、备份和恢复 10.Redis消息发布系统 11.Redis分布式环境 12.MongoDb原理 13.MongoDb命令 14.Java MongoDb API 15.MongoDb排序、索引 16.MongoDb备份恢复
了解nosql概念熟悉主流技术和使用环境的区别、熟练掌握项目中如何使用redis做缓存、了解mongodb特点和使用环境、了解对mongodb的管理和维护
第四阶段内容 企业项目实战
主要内容
涉及技术知识点
完成目标
开发平台和运行环境
1.Linux/Window7 2.Eclipse 3.Nginx 4.Tomcat 5.JDK 6.Orcale/Mysql 7.MEVEN
熟悉Linux和window *** 作系统应用、熟悉eclipase安装和使用、掌握jdk的安装和使用、掌握数据库的安装管理和使用
主流Java技术
1.Srping 2.MyBatis 3.Structs2 4.Hibernate 5.NoSql 6.HTML5 7.CSS3 8.Bootstrap 9.Ajax 10.多功能组件 11.多种前段组件
掌握ssm框架整合应用、掌握缓存应用、掌握制作前段界面、掌握使用其他组件实现文件上传日志处理连接池等等
常用扩展技术
1.WebService 2.Axis2/CXF创建、发布 3.CXF与Spring集成 4.ActiveMQ消息总线 5.activiti工作流 6.jfreechart图表 7.JasperReport报表技术 8.lucene引擎 9.dubbo分布式架构 10.第三方支付平台 11.第三方短信平台
掌握webservice服务调用、了解第三支付平台、短信平台等掌握java对第三支付平台、短信平台调用等掌握对dubbo架构平台的应用
很多的培训机构都会录制比较完整的入门级视频教程提供下载的,单是想要入门的话下载看这些就够了兄弟连Java战狼班,如果要深入的学习可以参考他们列出来的教学提纲去网络搜索兄弟连JavaEE战狼班:
第一阶段:Java语言基础
★ Java语言基础
1、面向对象思维JAVASE
2、(类加载机制与反射,annotation,泛型,网络编程,多线程,IO,异常处理,常用API,面向对象,JAVA编程基础)
3、Java8新特性
第二阶段:数据库
★ 数据库
1、Oracle(SQL语句、SQL语句原理、SQL语句优化、表、视图
2、序列、索引、Oracle数据字典、Oracle 数据库PL/SQL开发
3、数据库设计原则、 MySQL 、 JDBC
第三阶段:Web基础
★ Web基础
1、HTML5(H5)基本文档结构、链接、列表、表格、表单
2、CSS 基础语法、盒子模型、浮动布局、定位
3、JavaScript语言基础、DOM 编程、事件模型等),JQuery,AJAX框架,XML,BootStrap组件
第四阶段:Java Web技术和主流框架
★ Java Web技术和主流框架
1、JSP&Servlet、struts2,hibernate4,spring4,JPA,maven
2、SpringData,SpringMVC,MyBatis,SpringSecurity,shiro,Nginx
第五阶段:Linux
★ Linux
1、Linux安装、熟悉Linux的基础命令、vi编辑器的使用、awk和sed命令使用、用户和组
2、文件及目录权限管理、使用ACL进行高级访问控制、网络配置和软件包安装、启动流程和服务管理
3、系统监控和日志管理、进程管理和计划任务、ssh远程登录、shell基础和shell脚本。
第六阶段:大数据技术(Hadoop和Spark)
★ 大数据技术(Hadoop和Spark)
1、Hadoop (Hadoop基础和环境搭建,HDFS体系结构,MapReduce;Hadoop的集群模式、HDFS联盟,利用ZooKeeper来实现Hadoop集群的HA(高可用性)功能
2、Yarn的任务调度机制,Apache Hive,Pig数据处理,集成Hadoop和Sqoop
3、Flume以及Apache Kafka来实现数据的交换,安装部署HBase,Storm)
4、Scala 语言(Scala环境搭建、Scala基础语法、模式匹配、重载与构造器、Map与reduce、元组、继承、StringContext,Option Some None,Tuple;集合方法和运算,future 对象同步处理和异步处理返回结果)
5、Spark(Spark搭建,Spark-shell 的使用,Spark-submit 提交应用, Spark的内核设计和实现,并对内核中的实现架构、运行原理进行详细的讲解;Spark生态体系中的各个组件,包括:Spark Core,Shark,Spark SQL和Spark Streaming等等)
第七阶段:项目
★ 项目
1、China-UCSP 项目 SSM(Spring+SpringMVC+MyBatis)
2、用户关系管理系统 S2SH+Maven+Nodejs+MySQL技术实战开发
3、电子商务交易平台 S2SH+Maven+Shiro+Oracle
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)