天天看点

JAVA设计模式六大原则个人理解【下】

1、接口隔离原则

定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

理解:不要让类去实现接口中该类不需要实现的方法。

实例:

//类A只需要功能m1,类B只需要功能m2,但是把接口定义太复杂,太臃肿,类A和类B都必须实现接口I中其他本类不需要的方法
	interface I{
		public void m1();
		public void m2();
		public void m3();
	}
	
	class A implements I{
		public void m1(){System.out.print("类A需要功能m1")};
		public void m2(){};
		public void m3(){};
	}
	
	class B implements I{
		public void m2(){System.out.print("类B需要功能m2")};
		public void m1(){};
		public void m3(){};
	}
           
//采用接口隔离原则,将接口I拆分为独立的几个接口,然后让类A和类B分别去实现拥有他们所需功能的接口,这样类A和类B中也不会有多余的冗余代码
	interface I1{
		public void m1();
	}
	interface I2{
		public void m2();
	}
	interface I3{
		public void m3();
	}
	
	class A implements I1{
		public void m1(){System.out.print("类A需要功能m1")};
	}
	
	class B implements I2{
		public void m2(){System.out.print("类B需要功能m2")};
	}
           

2、迪米特法则

定义:一个对象应该对其他对象保持最少的了解。

理解:掌握低耦合、高内聚的思想;尽量不要让类依赖类,如果依赖类了,尽量让被依赖的类方法public,成员private;陌生的、你不需要了解的类,尽量不要出现在你的局部变量中。

实例:迪米特法则经典实例,请看博客中的《代理模式--介绍、应用及代码》一文。点击打开链接

3、开闭原则

定义:一个软件实体如类、模块和函数应对扩展开放,对修改关闭。

理解:除非BUG,当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有代码来实现变化。也就是你可以通过增加Public方法来扩展功能,但是不要修改已有代码,尤其是框架。开闭原则核心:用抽象构建框架,用实现扩展细节。

实例:将前面讲过的5种原则应用好了,开闭原则就实现了。

-----总结-----

单一职责原则:实现类要职责单一

里氏替换原则:尽量不要重写或重载父类,不要破坏继承体系

依赖倒置原则:多面向接口编程

接口隔离原则:设计接口要精简单一

迪米特法则:低耦合、高内聚,没必要去了解你所依赖的类或接口的全部,也不需要与你不想了解的类成为直接朋友。

开闭原则:总纲。对外扩展开放,修改关闭!!!