`
qq83833224
  • 浏览: 4310 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Design Pattern笔记4j(一)——接口模式

阅读更多
"Software entities should be open for extension,but closed for modification"
——Bertrand Meyer



距离本科结束,研究生开始已经快1年了,技术基本没有增长,惰性长了不少,是有必要温故而知新下了。design pattern作为一门本科时期上的模模糊糊的课程之一 ,有必要好好回顾下

更加详细的,专业的内容请参考《design pattern java workbook》,或者您想要了解下相反的,《bitter java》应里提供了不好坏模式。
系列文章,均基于java撰写,由于作者个人能力有限如有错误请指出。lins欢迎指教!

接口模式
先不管能不能把java里的接口称为一个模式,接口确实是个好东西。接口定义了一组必须实现的方法,不同与抽象类里可以有非抽象的方法,接口里面只能包含方法的声明。
由于多态的存在,接口变得很好很强大
后面的很多设计模式,都是跟接口有着千丝万缕的关系,更多的就留在后面吧,在这谈谈design pattern java workbook》里面讲到的关于接口的两个东东。

A 接口和存根(stub)
有时候,我们定义了一个接口A,然后里面有好多好多需要实现方法。每次想对其实现,是不是很麻烦呢?那么搞个存根B吧。存根B实现了接口A,里面的方法全部都是空方法 。以后我们需要做的就是继承存根B,重载需要重载的方法,而无关紧要的,那么就继续empty把。

引用
Q1:为什么我们不直接就写出B,而是弄个A,然后再搞个B实现了A?
“有时候客户给了我们代码,而且并不希望我们改变他的代码”,这个是本科时,那课老师时常提到的一个情况。也就是说,我们被给予了接口A,只能继续之。


B 接口里加入常量

在代码里,我们时常会出现一些常量,一般都是static final。当某个类很大,或者有不少的类都共享这一些常量。难道要每个类里各写一份?这时候,试着写个接口A,里面只有这些常量,所有需要这些常量的类就实现接口A。ok,这样是不是方便很多了呢?

引用
Q2:等等,你确定你没有穿越?
额,被发现了。这样做确实很爽,假如年代是在JDK1.5之前……Enum的出现使得这样做真的意义不大……

package bit.lin.dp;

public interface IImpTest {
	static final boolean isOpen = false;
	public void fun_1();
}

package bit.lin.dp;

public class ImpTest implements IImpTest {

	public void fun_1() {
		if(isOpen == EnumTest.open.value)
			System.out.println("equal");
	}
	public enum EnumTest {
		open(true), closed(false);
		boolean value;
		EnumTest(boolean b){
			this.value = value;
		}
	}
}

好吧,今天就这些~~
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics