详解。。java设计思想与设计模式------Beginer
2015-08-19 19:47
477 查看
Java程序设计的基本原则1
★ 面向接口编程
1)这是Java编程里面大家公认的第一原则。
2)接口很重要的一个功能:封装隔离
3)接口是功能块或封装块的外观
图片:
![](http://img.blog.csdn.net/20150819194706328?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
例如:(部分代码在后边)
具体思想:
-----面向接口编程思想
接口及相关机制最基本的作用:通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。根据接口可以了解对象的交互界面,而不需要了解对象所属的类。
面向对象程序设计讲究“提高内聚,松散耦合”,那么不同的程序模块怎么相互访问呢,就是通过接口,也就是接口是各部分对外的统一外观。接口在Java程序设计中体现的思想就是封装隔离,因为接口只是描述一个统一的行为,所以开发人员在面向接口编程时并不关心具体的实现。
由以上讲到的接口的作用和基本思想可以看到,接口在面向对象的Java程序设计中占有举足轻重的地位。事实上在设计阶段最重要的任务之一就是设计出各部分的接口,然后通过接口的组合,形成程序的基本框架结构。
-----对于行为模型,优先选用接口,尽量少用抽象类
-----既为约束子类的功能,又要提供一些公共的功能,就选用抽象类
★ 优先使用对象组合而非类继承
★ 分层( 最典型的三层结构: 表现层 --> 逻辑层 --> 数据层 )
博客超链接:点击打开链接
思想图解:
![](http://img.blog.csdn.net/20150819194434145?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
★ 层间交互的基本原则
① 表现层调用逻辑层,逻辑层调用数据层,不可以反过来。
② 层间交互也应该通过接口进行调用,以确保各层的实现独立变化。
第一部分代码:
第二部分代码:
无。。
第三部分代码:
无。。
第四部分代码:
无。。
★ 面向接口编程
1)这是Java编程里面大家公认的第一原则。
2)接口很重要的一个功能:封装隔离
3)接口是功能块或封装块的外观
图片:
例如:(部分代码在后边)
package cn.hncu.patterns.exercise.interfaceExercise; import cn.hncu.patterns.exercise.interfaceExercise.imp.AA; import cn.hncu.patterns.exercise.interfaceExercise.imp.BB; import cn.hncu.patterns.exercise.interfaceExercise.imp.CC; import cn.hncu.patterns.exercise.interfaceExercise.inter.C; /* * 假设某公司接到一个订单, * 客户要求: * 1)输出"aaaaaaaaaaaaa" * 过了不久客户对该公司提出了一个新的要求, * 2)输出"bbbbbbbbbbbbbbb" * 当软件发布后,客户提出添加一个新的功能, * 3)这时要输出"cccccccccccccc" */ public class Client { public static void main(String[] args) { // test1(); // test2(); /* * 项目做法, * 记住软件是“对新增开放,对修改关闭” * 定义一个接口, * Java虚拟机会调用Class.forName("CC.class")方法, * 找到该接口的具体实现类。 */ C c = new CC(); c.t3();// 输出cccccccccccccc } private static void test2() { BB b = new BB(); b.t2();// 输出bbbbbbbbbbbbbbb } private static void test1() { AA a = new AA(); a.t1();// 输出aaaaaaaaaaaaa } }
具体思想:
-----面向接口编程思想
接口及相关机制最基本的作用:通过接口可以实现不相关类的相同行为,而不需要考虑这些类之间的层次关系。根据接口可以了解对象的交互界面,而不需要了解对象所属的类。
面向对象程序设计讲究“提高内聚,松散耦合”,那么不同的程序模块怎么相互访问呢,就是通过接口,也就是接口是各部分对外的统一外观。接口在Java程序设计中体现的思想就是封装隔离,因为接口只是描述一个统一的行为,所以开发人员在面向接口编程时并不关心具体的实现。
由以上讲到的接口的作用和基本思想可以看到,接口在面向对象的Java程序设计中占有举足轻重的地位。事实上在设计阶段最重要的任务之一就是设计出各部分的接口,然后通过接口的组合,形成程序的基本框架结构。
-----对于行为模型,优先选用接口,尽量少用抽象类
-----既为约束子类的功能,又要提供一些公共的功能,就选用抽象类
★ 优先使用对象组合而非类继承
package cn.hncu.patterns.exercise.interfaceExercise; import cn.hncu.patterns.exercise.interfaceExercise.imp.AA; import cn.hncu.patterns.exercise.interfaceExercise.inter.A; /* * 假如Test类想用A类中的函数t1(), * 那么我们该怎么选择能? * 下面的两种方法我们称子为危险的游戏平衡。 */ public class Test { /* * 第一种定义一个类: * 称为饿汉式 * A为接口 * AA实现了A接口的类 */ A a = new AA(); public void t1(){ a.t1(); } /* * 第二种方法, * 调用t2()方法时才会用t1()方法, * 称为懒汉式 */ public void t2(){ new AA().t1(); } } class Test1 extends AA { /* * 方法1 */ public void t1(){ super.t1(); } /* * 方法2, * 可以直接调用 */ }
★ 分层( 最典型的三层结构: 表现层 --> 逻辑层 --> 数据层 )
博客超链接:点击打开链接
思想图解:
★ 层间交互的基本原则
① 表现层调用逻辑层,逻辑层调用数据层,不可以反过来。
② 层间交互也应该通过接口进行调用,以确保各层的实现独立变化。
第一部分代码:
package cn.hncu.patterns.exercise.interfaceExercise.imp; import cn.hncu.patterns.exercise.interfaceExercise.inter.A; public class AA implements A { @Override public void t1() { System.out.println("aaaaaaaaaaaaa"); } }
package cn.hncu.patterns.exercise.interfaceExercise.imp; import cn.hncu.patterns.exercise.interfaceExercise.inter.B; public class BB implements B { @Override public void t2() { System.out.println("bbbbbbbbbbbbbbb"); } }
package cn.hncu.patterns.exercise.interfaceExercise.imp; import cn.hncu.patterns.exercise.interfaceExercise.inter.C; public class CC implements C { @Override public void t3() { System.out.println("cccccccccccccc"); } }
package cn.hncu.patterns.exercise.interfaceExercise.inter; public interface A { public void t1(); }
package cn.hncu.patterns.exercise.interfaceExercise.inter; public interface B { public void t2(); }
package cn.hncu.patterns.exercise.interfaceExercise.inter; public interface C { public void t3(); }
第二部分代码:
无。。
第三部分代码:
无。。
第四部分代码:
无。。
相关文章推荐
- Java集合总览
- Struts(3)工作机制及分析
- Struts(2)环境搭建
- java 输出流和输入流
- Struts(1)初识Struts
- java 操作war文件
- java中将由数字组成的字符串型(String)转换成整型(int)
- Java IO流 装饰 字节流--19
- 快速生成java中的setter和getter
- Java记录
- 【Java】-基础-线程
- NIO(JDK1.4)--选择器Selector
- Ajax +SpringMVC 请求后台数据
- 在 Java 中如何更高效地存储和管理 SQL 语句?
- eclipse 终极操作技巧
- 在 Java 中如何更高效地存储和管理 SQL 语句?
- 安卓中eclipse不显示窗口与出现许多不认识的东西
- startexplorer插件 eclipse中项目文件快速定位到文件夹
- android sdk +adt+eclipse
- java图片验证码