1.接口和抽象类区别
接口是对行为的抽象,抽象方法的集合。不能实例化,不能有任何非常量成员,没有非静态方法实现。接口增加方法所有实现类都需要实现
抽象类是不能实例化的类,主要目的是代码重用。抽象类增加非抽象方法,子类不需要感知。
2.基本设计原则
1.单一职责
对一个类而言,应该仅有一个引起它变化的原因。如果存在多于一个动机去改变一个类,那么这个类就具有多于一个的职责,就应该把多余的职责分离出去,再去创建一些类来完成每一个职责
2.开关原则
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。目的就是保证程序的扩展性好,易于维护和升级
3.里式替换原则
子类可以扩展父类的功能,但是不能改变父类原有的功能。继承必须明确确保超类(父类)所拥有的性质在子类中仍然成立
- 接口分离原则
建立单一接口,代替庞大臃肿的接口。通俗来说就是:接口尽量细化,同时保证接口中的方法尽量的少。一个接口中包含太多的行为时,会导致它们与客户端的不正常依赖关系,要做的就是分离接口,从而实现解耦。 - 依赖倒置原则
是一个类与类之间的调用规则。这里的依赖就是代码中的耦合。高层模块不应该依赖底层模块,二者都应该依赖其抽象了;抽象不依赖细节;细节应该依赖抽象。接口编程。 - 迪米特原则
Law of Demeter(最小知识原则):一个对象应该对其他对象有最少的了解。通俗来说就是,一个类对自己需要耦合或者调用的类知道的最少,你类内部怎么复杂,我不管,那是你的事,我只知道你有那么多公用的方法,我能调用。
迪米特原则不希望类与类之间建立直接的接触。如果真的需要有联系,那么就通过它们的友元类来传达。举例来说:你需要买房子了,现在存在三座合适的楼盘A,B,C,但是你不必直接去楼盘买楼,而是在售楼处去了解情况。这样就减少了你(购房者)与楼盘两个类之间耦合。
3.设计模式分类
1.创建者模式
创建过程各种解决方案,工厂模式,单例模式,构建器模式,原型模式
2.结构型模式
软件设计结构的总结,关注于类,对象继承,组合方式的实践经验:桥接模式,适配器模式,装饰模式,代理模式,组合模式,外观模式
3.行为型模式
从类,对象之间交互,职责划分等角度总结的经验:策略模式,解释器模式,命令模式,观察者模式
image.png
4 设计模式关联
image.png4. 设计模式示例
工厂方法模式:https://blog.csdn.net/carson_ho/article/details/52343584
装饰器模式:inputStream,bufferedInputStream为输入流增加缓存功能
构建器模式:httpRequest.newBuilder
单例模式:https://blog.csdn.net/u011595939/article/details/79972371
public class Singleton2 {
private static final Singleton2 instance = new Singleton2();
private Singleton2() {
}
public static Singleton2 getInstance() {
return instance;
}
}
其他模式举例:https://www.runoob.com/design-pattern/abstract-factory-pattern.html
桥接模式:https://www.liaoxuefeng.com/wiki/1252599548343744/1281319266943009
过滤器模式:https://www.runoob.com/design-pattern/filter-pattern.html
网友评论