1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 手放开 李圣杰
  4. 4 迷人的危险3(翻自 dance flow) FAFA
  5. 5 山楂树之恋 程佳佳
  6. 6 summertime cinnamons / evening cinema
  7. 7 不谓侠(Cover 萧忆情Alex) CRITTY
  8. 8 神武醉相思(翻自 优我女团) 双笙
  9. 9 空山新雨后 音阙诗听 / 锦零
  10. 10 Wonderful U (Demo Version) AGA
  11. 11 广寒宫 丸子呦
  12. 12 陪我看日出 回音哥
  13. 13 春夏秋冬的你 王宇良
  14. 14 世界が终わるまでは… WANDS
  15. 15 多想在平庸的生活拥抱你 隔壁老樊
  16. 16 千禧 徐秉龙
  17. 17 我的一个道姑朋友 双笙
  18. 18 大鱼  (Cover 周深) 双笙
  19. 19 霜雪千年(Cover 洛天依 / 乐正绫) 双笙 / 封茗囧菌
  20. 20 云烟成雨(翻自 房东的猫) 周玥
  21. 21 情深深雨濛濛 杨胖雨
  22. 22 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  23. 23 斑马斑马 房东的猫
  24. 24 See You Again Wiz Khalifa / Charlie Puth
  25. 25 Faded Alan Walker / Iselin Solheim
  26. 26 Natural J.Fla
  27. 27 New Soul Vox Angeli
  28. 28 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  29. 29 像鱼 王贰浪
  30. 30 Bye Bye Bye Lovestoned
  31. 31 Blame You 眠 / Lopu$
  32. 32 Believer J.Fla
  33. 33 书信 戴羽彤
  34. 34 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  35. 35 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  36. 36 慢慢喜欢你 LIve版(翻自 莫文蔚) 戴羽彤
  37. 37 病变(翻自 cubi) 戴羽彤
  38. 38 那女孩对我说 (完整版) Uu
  39. 39 绿色 陈雪凝
  40. 40 月牙湾 LIve版(翻自 F.I.R.) 戴羽彤
夜空中最亮的星(翻自 逃跑计划) - 戴羽彤
00:00 / 04:10

夜空中最亮的星 能否听清

那仰望的人 心底的孤独和叹息

夜空中最亮的星 能否记起

那曾与我同行 消失在风里的身影

我祈祷拥有一颗透明的心灵

和会流泪的眼睛

给我再去相信的勇气

越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请指引我靠近你

夜空中最亮的星 是否知道

那曾与我同行的身影 如今在哪里

夜空中最亮的星 是否在意

是等太阳先升起 还是意外先来临

我宁愿所有痛苦都留在心底

也不愿忘记你的眼睛

哦 给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行 哒~

我祈祷拥有一颗透明的心灵

和会流泪的眼睛 哦

给我再去相信的勇气

哦 越过谎言去拥抱你

每当我找不到存在的意义

每当我迷失在黑夜里

噢喔喔 夜空中最亮的星

请照亮我向前行

设计模式详解

1、单例模式

核心要点

构造方法私有
存在由static修饰的返回实例的方法

优势

减少创建Java实例所带来的系统开销
便于系统跟踪单个Java实例的声明周期、实例状态等

package singleton;

public class Singleton {
    private static Singleton instance;
    private Singleton() {}
    public static Singleton getInstance() {
        if(instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

2、简单工厂模式

要点

通过工厂类的形式进行解耦合
依赖关系通过接口解耦合

优缺点

让对象的调用者和对象创建过程分离,当对象调用者需要对象时,直接向工厂请求即可;
避免了对象的调用者和对象的实现类以硬解码方式耦合,提高了系统的可维护性、拓展性
需要注意的一个陷阱是:当产品修改时,工厂类也要做相应的修改

package simplefactory;

public class Computer {
    private Output out;
    public Computer(Output out) {
        this.out = out;
    }
    
    public void keyIn(String msg) {
        out.getData(msg);
    }
    
    public void print() {
        out.out();
    }
}
package simplefactory;

public class OutputFactory {
    public Output getOutput() {
        return new Printer();
    }
}
package simplefactory;

public interface Output {
    final int MAX_CACHE_LINE=200;
    void getData(String msg);
    void out();
}
package simplefactory;


public class Printer implements Output {
    private String[] printData = new String[MAX_CACHE_LINE];
    private int dataNum = 0;

    @Override
    public void getData(String msg) {
        if(dataNum >= MAX_CACHE_LINE) {
            System.out.println("输出队列已满,添加失败");
        } else {
            printData[dataNum++] = msg;
        }
        
    }

    @Override
    public void out() {
        while(dataNum > 0) {
            System.out.println("打印机打印:" + printData[0]);
            System.arraycopy(printData, 1, printData, 0, --dataNum);
        }
        
    }

}
package simplefactory;

public class Test {
    public static void main(String[] args) {
        OutputFactory of = new OutputFactory();
        Computer c = new Computer(of.getOutput());
        c.keyIn("hello world");
        c.keyIn("java");
        c.keyIn("spring");
        c.print();
    }
}

3、工厂方法和抽象工厂

要点

  • 和简单工厂相比,工厂方法多了一个接口,也就是工厂接口,Ouput子类的工厂类均继承该接口,实现getOutput()方法
  • 当使用工厂方法设计模式时,对象调用者需要与具体的工厂类进行耦合:当需要不同对象时,程序需要调用相应工厂对象的方法来得到所需的对象
  • 对于采用工厂方法的设计架构,客户端代码成功与被调用对象实现了分离,但带来了另一种耦合:客户端代码与不同的工厂类耦合
  • 为了解决上面的耦合,增加一个工厂类,用于创建不同的工厂对象,这个特殊的工厂类被称为抽象工厂类,这种设计模式被称为抽象工厂模式
// 工厂接口
package abstractfactory;

import simplefactory.Output;
/**
 * 
 *TODO output工厂接口
 *
 * @author CaoLei 2018年7月1日下午3:19:36
 * OutputFactory
 */
public interface OutputFactory {
    
    Output getOutput();

}

// 工厂方法,工厂类

package abstractfactory;

import simplefactory.BetterPrinter;
import simplefactory.Output;

public class BetterPrinterFactory implements OutputFactory {

    @Override
    public Output getOutput() {
        return new BetterPrinter();
    }

}

// 抽象工厂,抽象工厂类
package abstractfactory;

public class OutputFactoryFactory {
    public static OutputFactory getOutputFactory(String type) {
        if ("better".equals(type)) {
            return new BetterPrinterFactory();
        } else {
            return new PrinterFactory();
        }

    }
}

posted @ 2018-07-01 21:11  云中志  阅读(219)  评论(0编辑  收藏  举报