"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;
}
}
}
好吧,今天就这些~~
分享到:
相关推荐
桥接模式-Bridge Pattern 处理多维度变化——桥接模式(一) 处理多维度变化——桥接模式(二) 处理多维度变化——桥接模式(三) 处理多维度变化——桥接模式(四) 组合模式-Composite Pattern 树形结构的处理...
著名的《Head First Design Pattern》学习笔记,摘要这本书中的设计思路。由于书本过长,整理出笔记帮助回想起设计模式。文件是docx格式,只能由OFFICE Word 2007之后的版本打开,内附Visio类图文件。本文由个人整理...
DesignPattern 设计模式,共10章。内容详细,案例设计齐全。对设计可复用的面向对象的软件很有帮助,有助你写出又质量,并且可重复使用的高品质软件
本书已经成为面向对象技术人员的圣经和词典,书中定义的23个模式逐渐成为开发界技术交流所必备的基础知识和语汇。
《Design Pattern》中文/英文版+学习笔记+英文网页版. 设计模式的,来到这里的应该都知道.
Mobile Design Pattern Gallery : UI Patterns for Mobile Applications原版 全彩 120M大容量《移动应用ui设计模式》是一本移动应用ui 设计模式参考书,分10 大类介绍了70 个移动应用设计模式(包括反模式),用400 ...
23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm”供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) 生成...
Design*Pattern*Framework*4.5
深入浅出设计模式 (Head First Design Pattern)_带书签 深入浅出设计模式 (Head First Design Pattern)_带书签
Theresa Neil's new book "Mobile Design Pattern Gallery" provides solutions to common design challenges. There is inspiration on every topic from designing your application's navigation to choosing ...
DesignPattern_BasicKnowledge设计模式之类关系:设计模式 类关系 基础 依赖 关联
JAVA software design pattern
你不想重新发明车轮(或者更差的是,没有充气车胎的轮子),所以你从设计模式中寻求帮助—— 设计模式是过去人们面对同样的软件设计问题所得到的经验。 有了设计模式,就可以利用其他人的实践经验的精华, 因此省下...
Design Pattern 简明手册,设计模式查阅简明手册
GoF的经典著作设计模式(Design Pattern)
Head First Design Patterns 作者: (美)弗里曼(Freeman,E.) 副标题: Head First Design Patterns 简介 ······ 你不想重新发明车轮(或者更差的是,没有充气车胎的轮子),所以你从设计模式中寻求帮助—— ...
design pattern design pattern
Head First Design Pattern
C++ 23种设计模式(全_解释+源代码).zip 23种设计模式都是基于以下原则,务必记牢 依赖倒转原则 里氏代换原则 开闭原则 接口隔离原则 合成聚合复用原则 迪米特法则 23种设计模式如下:
Design Pattern for dummnies