ARTS-6-面向对象设计的SOLID原则

松花皮蛋me 2019-04-21 20:53
文章首发于公众号 松花皮蛋的黑板报松花皮蛋的黑板报,作者就职于京东,在稳定性保障、敏捷开发、高级JAVA、微服务架构有深入的理解

ARTS的初衷

Algorithm: 主要是为了编程训练和学习。

Review:主要是为了学习英文

Tip:主要是为了总结和归纳在是常工作中所遇到的知识点。学习至少一个技术技巧。在工作中遇到的问题,踩过的坑,学习的点滴知识。

Share:主要是为了建立影响力,能够输出价值观。分享一篇有观点和思考的技术文章

https://www.zhihu.com/question/301150832

一、Algorithm

Perfect Squares

Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, …) which sum to n.

Example 1:

Input: n = 12
Output: 3
Explanation: 12 = 4 + 4 + 4.
Example 2:

Input: n = 13
Output: 2
Explanation: 13 = 4 + 9.

class Solution {
    public int numSquares(int n) {
        // 动态规划, 设 f[i] 表示加和为 i 的最少完全平方数的个数.
        // 状态转移方程: f[i] = min{f[i], f[i - j * j] + 1} (j*j <= i)
        // 边界: f[i*i] = 1
        int[] dp = new int[n+1];
        Arrays.fill(dp, Integer.MAX_VALUE);
        for(int i=0;i*i<=n;++i) {
            dp[i*i] = 1;
        }

        for(int i=0;i<=n;++i) {
            for(int j=1;j*j<=i;++j) {
                dp[i] = Math.min(dp[i],dp[i-j*j]+1);
            }
        }
        return dp[n];         
    }
}  

二、Review

面向对象设计的SOLID原则

1、 Single responsibility principle-单一职责原则
2、 Open-closed principle-现有接口规范可以通过继承重用,不要修改现有已完成的接口
3、Liskov substitution principle-里氏代换原则,当一个类继承另外一个类时,除添加新的方法外,尽量不要重写或者重载父类的方法。否则引用基类完成的功能,换成子类后就会出现异常
4、Interface segrgation principle-接口隔离原则
5、Dependency inversion principle-依赖倒置,高层模块不应该依赖低层模块,两者都应该依赖抽象,大概意思是标准先行

三、Tip

推荐专注力不够好的的朋友比如我这种下载forest这个软件,如果达成一个目标就加一个树,如果途中玩手机,成长中的小树就会消失

四、Share

ES学习分享

京东技术解密之配置中心DUCC


文章已于2019-06-08 00:15修改,变动:修改文章标题
阅读 163 次