1 组合和继承有何区别?(暂时没想到更啥,先更着之前写的东西吧。。。)
- 继承:is-a关系。实现对父类的扩展,但是继承的
-- 缺点:父类细节对子类可见;高耦合
- 组合:has-a关系。把组合类的对象加入到当前类中作为一个成员变量。
-- 优点:通过所包含的对象去调用那个类的方法,即所包含对象内部细节对当前对象不可见;低耦合,修改被包含类仅需要修改那个类(不影响当前类);运行时可动态改变被包含类(如通过set设置另一个被包含类)
-- 缺点:易产生过多对象;需要为被组合的对象定义接口
总结:相对而言,组合能够隐藏细节、降低耦合性、动态改变组合对象。所以优先使用组合。
2 设计模式六大原则
1 单一职责原则:功能单一,如数据库、excel处理是两种形式,不能写在一起,需拆分。
2 开闭原则:对扩展开放,对修改关闭。尽量在不修改原有代码下扩展。如抽象层实现,仅需对具体实现层修改即可。如组合。
3 里氏替换原则:可以接受父类,那也能接受其子类(上转型),反之不行。是开闭原则基础。
4 接口隔离原则:为子类提供尽可能小的接口,拆分大的接口。每个接口都是单一职责。
5 依赖倒置原则:针对接口编程,传递参数时尽可能引用高层抽象层类。并通过依赖注入方式注入类。如Aminal dog = new Dog();
6 迪米特法则:尽可能降低耦合,降低成员访问权限。
总结:开闭是目标、里氏是基础、依赖是手段。单开里接依迪。
标签:原则,组合,对象,知识,接口,--,其他,耦合,设计模式 From: https://blog.51cto.com/u_13854513/6127521