黑马程序员-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、 依赖倒转原则
    含义:要依赖于抽象类, 不要依赖于具体类(就是当一个对象中有另一个对象的引用时,最好不要引用该对象本身,而是引用该对象的接口或抽象类)
    实现方法:针对接口编程,不要针对实现编程 

依赖也就是耦合,共分为下面3种。 
    零耦合(Nil Coupling)关系:两个类没有依赖关系。 
    具体耦合(Concrete Coupling)关系:两个具体的类之间有依赖关系,如果一个具
体类直接引用另外一个具体类,就是这种关系。 
    抽象耦合(Abstract Coupling)关系:这种关系发生在一个具体类和一个抽象类之间,
这样就使必须发生关系的类之间保持最大的灵活性。  
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>、期待与您交流! ----------------------

0 0