黑马程序员-android之设计模式
来源:互联网 发布:阿里云 注册域名送邮箱 编辑:程序博客网 时间:2024/06/10 13:54
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
1、开闭原则
含义:对扩展开放,对修改关闭
使用方法:多使用抽象类和接口
a:多使用抽象类
在设计类时,对于拥有共同功能的相似类进行抽象化处理,将公用的功能部分放到抽象类中,所有的操作都调用子类,这样,在需要对系统进行功能扩展时,只需要依据抽象类实现新的子类即可。
b: 多使用接口
与抽象类不同,接口只定义子类应该实现的接口函数,而不实现公有的功能,在现在大多数软件开发中,都会为实现类定义接口,如果要改换原有的实现,只需要该换一个实现类即可。
2、里氏代换原则
含义:基类可以被子类替换(再用到基类的地方,换成子类也依然正确)
使用方法:从抽象类继承,不要从具体类继承
eg:我们知道正方形是一种特殊的长方形,所以我们用正方形继承长方形
Rectangle类
public class Rectangle {private int width;private int height;public int getWidth() {return width;}public void setWidth(int width) {this.width = width;}public int getHeight() {return height;}public void setHeight(int height) {this.height = height;}}
Square类
public class Square extends Rectangle {public void setWidth(int width) {super.setWidth(width);super.setHeight(width);}public void setHeight(int height) {super.setWidth(height);super.setHeight(height);}}
TestRectangle类
public class TestRectangle {public static void main(String[] args) {Rectangle rect = new Rectangle();zoom(rect, 10, 20);}public static void zoom(Rectangle rectangle, int width, int height) {rectangle.setWidth(rectangle.getWidth() + width);rectangle.setHeight(rectangle.getHeight() + height);}}
在测试函数里,我们要为长和宽增加高度,但是如果长宽增加的高度不一样,那么对正方形来说,就失败了
修改:定义长方形和正方形的共同父类
3、 依赖倒转原则
含义:要依赖于抽象类, 不要依赖于具体类(就是当一个对象中有另一个对象的引用时,最好不要引用该对象本身,而是引用该对象的接口或抽象类)
实现方法:针对接口编程,不要针对实现编程
4、接口隔离原则:
含义:使用多个隔离的接口,不要使用单个大接口
实现方法:建立最小的接口
5、迪米特法则(最少知道原则)
含义:一个实体应当尽可能少的与其他实体发生相互作用
实现方法:通过中间类建立联系
6、合成复用原则
含义:尽量使用合成/聚合,而不是使用继承
实现方法:尽量使用合成/聚合,而不是使用继承
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
- 黑马程序员-android之设计模式
- 黑马程序员---设计模式之工厂模式
- 黑马程序员-之单例设计模式
- <<黑马程序员>>java基础之设计模式
- 《黑马程序员》java之装饰设计模式
- 《黑马程序员》 接口之工厂设计模式
- 黑马程序员-设计模式之单例设计模式
- 黑马程序员_Java设计模式之单例设计模式
- 黑马程序员:设计模式
- 黑马程序员-设计模式
- 黑马程序员-----------设计模式
- 黑马程序员-设计模式
- 黑马程序员--设计模式
- 黑马程序员 设计模式
- 黑马程序员-----设计模式
- 黑马程序员_JAVA设计模式之单例模式
- 《黑马程序员》设计模式之DECORATOR -装饰模式
- 黑马程序员-设计模式之简单工厂模式(引入)
- YYUC输出联动select标签
- POJ 3678 深刻理解2SAT
- BNUOJ--29379 斩
- Get和Post请求的区别
- Struts2 -- 原理简述
- 黑马程序员-android之设计模式
- Leetcode: Remove Nth Node From End of List 总结
- windows下 用串行连接控制树莓派
- T-SQL查询处理执行顺序(二)
- PB之DWItemStatus
- EDID
- Flash Socket 和 Erlang Socket 通信的注意事项
- POJ 2251
- C语言中的左移右移