您的位置:首页 > 编程语言 > Java开发

详解。。java设计思想与设计模式------Beginer

2015-08-19 19:47 477 查看
Java程序设计的基本原则1

★ 面向接口编程

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();
}


第二部分代码:

无。。

第三部分代码:

无。。

第四部分代码:

无。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: