"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 树形结构的处理...
《DesignPattern设计模式》是软件开发领域中的一部经典之作,它主要探讨的是在面向对象编程中如何设计可复用、高效且具有高质量的代码。设计模式是对在软件设计过程中遇到的常见问题的一种最佳实践解决方案的总结,...
在这个名为"Designpattern.zip"的压缩包中,我们聚焦于Java编程语言中的一个关键设计模式——工厂模式。这个模式属于创建型模式,它提供了一种创建对象的最佳方式,旨在简化对象的创建过程,并提高代码的可读性和可...
著名的《Head First Design Pattern》学习笔记,摘要这本书中的设计思路。由于书本过长,整理出笔记帮助回想起设计模式。文件是docx格式,只能由OFFICE Word 2007之后的版本打开,内附Visio类图文件。本文由个人整理...
在这个"C++ Design Pattern 23种设计模式(全_解释+源代码).zip"压缩包中,包含了对23种经典设计模式的详细解释和源代码实现,这些模式均基于面向对象编程的原则。 首先,我们来看看这些设计模式的基础原则: 1. **...
4. **抽象工厂模式**:抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。它允许用户在不修改代码的情况下切换产品族。 5. **原型模式**:原型模式通过复制已有对象来创建新对象,...
4. **装饰者模式**(DecoratorPattern):动态地给对象添加一些额外的职责,即增加功能,同时保持对象接口的一致性。它允许扩展一个对象的功能,而不会影响到其他对象。 5. **抽象工厂模式**...
总而言之,《设计模式英文版-Design Pattern Explained》不仅是一本介绍设计模式的书籍,更是一本引导读者从面向对象编程走向真正面向对象思维的指南。通过本书的学习,读者可以更好地理解面向对象编程的本质,并将...
"Design*Pattern*Framework*4.5" 可能指的是一个基于 .NET Framework 4.5 的设计模式实现或教程集合。 设计模式是经验丰富的软件开发者的智慧结晶,它们被分为三类:创建型、结构型和行为型。创建型模式涉及对象的...
"DesignPattern-master_designpattern_powerful854_" 这个压缩包很可能包含了23种经典的设计模式的实现或者相关教程,旨在帮助开发者提升软件设计的灵活性、可维护性和可扩展性。 设计模式分为三大类:创建型模式、...
以上仅是"Head First DesignPattern_src"源码中的一部分设计模式,每种模式都提供了具体的实现,便于学习和理解。通过深入研究这些代码,开发者可以提升软件设计能力,编写出更高效、更易于维护的代码。
在编程领域,设计模式是一种被广泛接受的解决常见问题的最佳实践。它们是经过时间验证的、可重用的解决方案,可以提升代码的可读性、可维护性和扩展性。Go语言,作为一门现代化的编程语言,同样可以从设计模式中受益...
23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm”供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) 生成...
深入浅出设计模式 (Head First Design Pattern)_带书签 深入浅出设计模式 (Head First Design Pattern)_带书签
设计模式(Design Pattern)是软件工程中的一种经验总结,它是在特定上下文中为解决常见问题而提出的一套可复用的解决方案。设计模式并不直接实现为代码,而是提供了一种在面向对象设计中如何处理常见问题的指南。...
8. **适配器模式(Adapter)**:将一个类的接口转换成客户希望的另一个接口。适配器使原本接口不兼容的类可以一起工作。 9. **桥接模式(Bridge)**:将抽象部分与实现部分分离,使它们可以独立变化。这种模式可以...
"DesignPattern_BasicKnowledge设计模式之类关系"这个主题主要探讨了类之间的交互方式,包括依赖、关联等基本概念,这些都是构建可扩展、可维护的软件系统的基础。 1. **设计模式**:设计模式是对在特定上下文中...
#### 一、接口型(interface)模式 **1. Adapter(适配器模式)** - **定义**:允许一个类接口与另一个不兼容的类接口协同工作。 - **分类**: - **继承型Adapter**:通过继承来实现接口适配。 - **组合型Adapter*...
良葛格的《Design Pattern学习笔记》不仅涵盖了经典的GOF设计模式,还额外介绍了几种多线程模式,这使得这份学习笔记成为了一个宝贵的学习资源。下面将对其中的部分设计模式进行详细介绍。 #### 二、GOF设计模式 ...