设计模式:
- 是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结
- 套路 模式
前人已经经过大量测试得出的设计模式
使用设计模式的好处:提高代码的可重用性与可靠性。
单例设计模式 :
单个实例 == 》单个对象 意味着只能创建一个对象,就好电脑的任务管理器,只能有一个窗口。
单例设计模式:
① 私有构造方法
② 对外提供一个对象,供其他的类访问,但是该对象需要封装,通过 private 私有,提供 getter 方法。
③ 必须通过 static 进行类名调用。
单例设计模式的常用形式:
① 饿汉式
② 懒汉式
注意 : 懒汉式在理论上是优于饿汉式的,但是在开发中,往往使用的是饿汉式,尽管饿汉式的资源消耗大,但是
懒汉式有线程安全问题,比较来说,饿汉式使用效果优
饿汉式单例设计模式:
代码示例:
1 package DemoList;
2
3 public class Demo10 {
4 public static void main(String[] args) {
5 HungryMan instance=HungryMan.getInstance();
6 HungryMan instance2=HungryMan.getInstance();
7 System.out.println(instance==instance2);
8 }
9 }
10 class HungryMan{
11 private HungryMan() {
12 }
13 private static HungryMan instance=new HungryMan();
14 public static HungryMan getInstance() {
15 return instance;
16 }
17 }
执行结果:
懒汉式单例设计模式:
代码示例:
1 package DemoList;
2
3 public class Demo11 {
4 public static void main(String[] args) {
5 FoolMan instance=FoolMan.getInstance();
6 FoolMan instance2=FoolMan.getInstance();
7 System.out.println(instance==instance2);
8 }
9 }
10 class FoolMan{
11 private FoolMan() {
12
13 }
14 private static FoolMan instance=null; //注意这里,只有当确定调用getInstance()方法时才会去创建对象。
15 public static FoolMan getInstance() {
16 if(instance==null) {
17 instance=new FoolMan();
18 }
19 return instance;
20 }
21 }
执行结果:
单例设计模式总的代码示例:
1 public class 单例设计模式 {
2 public static void main(String[] args) {
3 // new SingleTon();
4 /* SingleTon instance = SingleTon.getInstance();
5 SingleTon instance1 = SingleTon.getInstance();
6 System.out.println(instance==instance1);*/
7 SingleTon1.fun();
8 SingleTon1 in1 = SingleTon1.getInstance();
9 SingleTon1 in2 = SingleTon1.getInstance();
10 System.out.println(in1==in2);
11 }
12 }
13 // 单例设计模式 -- 饿汉式
14 class SingleTon{
15 //1. 构造方法私有
16 private SingleTon() {
17 }
18 //2. 为外界提供一个对象
19 private static SingleTon instance=new SingleTon();//int a=5;
20 //3. 将对外提供的对象,封装,私有的属性共有的方法,对外提供 getter 方法,让其他类可以获取该对象
21 // 4. 为了能够使用类名进行调用,使用 static 进行修饰
22 public static SingleTon getInstance() {
23 return instance;
24 }
25 }
26 // 单例设计模式 -- 懒汉式
27 class SingleTon1{
28 //1. 构造方法私有
29 private SingleTon1() {
30 System.out.println("aaaa");
31 }
32 //2. 为外界提供一个对象
33 private static SingleTon1 instance=null;//
34 //3. 将对外提供的对象,封装,私有的属性共有的方法,对外提供 getter 方法,让其他类可以获取该对象
35 // 4. 为了能够使用类名进行调用,使用 static 进行修饰
36 public static SingleTon1 getInstance() {
37 // 判断对象如果为 null 就创建
38 if(instance==null) {
39 instance=new SingleTon1();
40 }
41 return instance;
42 }
43 public static void fun() {}
44 }
枚举:
. 枚举: 有限个数值 / 对象。
2. 性别 , 星期,交通灯,季节
3. 一般的类来模拟枚举类的实现。 ( 季节来模拟 )
①. 格式 :
关键字 enum 该关键字表示枚举类。
②. 枚举类中对象写在第一行。并且多个枚举对象之间用逗号隔开,最后一个跟分号 , 并且枚举对象一般用大写
。
③. 枚举类实质还是一个类,类的特性它都有:
类的成员。属性 方法 构造方法 抽象方法
代码示例:
1 public static void main(String[] args) {
2 // System.out.println(SeasonE.SPRING);
3 // 调用枚举类中的方法
4 /* SeasonE.SPRING.fun();
5 SeasonE.AUTUMN.fun();*/
6 SeasonE.SPRING.display();
7 }
8 }
9 // 枚举类
10 enum SeasonE{
11 // SPRING,SUMMER,AUTUMN,WINTER;
12 // 有参构造形式
13 SPRING(" 春季 "){
14 @Override
15 public void display() {
16 System.out.println(" 鸟语花香 ");
17 }
18 },SUMMER(" 夏季 ") {
19 @Override
20 public void display() {
21 System.out.println(" 烈日炎炎 ");
22 }
23 },AUTUMN(" 秋季 ") {
24 @Override
25 public void display() {
26 System.out.println(" 秋高气爽,硕果累累 ");
27 }
28 },WINTER(" 冬季 ") {
29 @Override
30 public void display() {
31 System.out.println(" 寒风刺骨 ");
32 }
33 };
34 String desc;
35 public void fun() {
36 System.out.println(" 这是季节的描述 ");
37 }
38 // 构造方法 必须被私有
39 /*private SeasonE() {
40 }*/
41 private SeasonE(String desc) {
42 this.desc=desc;
43 }
44 // 抽象方法 描述不同季节的特征
45 public abstract void display();
46 }
47 class A{
48 SeasonE m;
49 }
枚举应用之交通灯:
代码示例:
1 public class 交通灯描述交通行为 {
2 public static void main(String[] args) {
3 // 选择其中一个对象,执行行为
4 Scanner sc=new Scanner(System.in);
5 System.out.println(" 请选择灯的颜色, 1. 红灯 2. 绿灯 3. 黄灯 ");
6 /*int choose = sc.nextInt();
7 switch (choose) {
8 case 1:
9 TrLight.RED.action();
10 break;
11 case 2:
12 TrLight.GREEN.action();
13 break;
14 case 3:
15 TrLight.YELLOW.action();
16 break;
17 }*/
18 //switch 的小括号的数据类型 可以是 byte short char -- 》 int 在 1.7jdk 之后 String 。 enum 枚举类也支
19 持
20 TrLight t=TrLight.valueOf(sc.next().toUpperCase());
21 switch(t) {
22 case RED:t.action();break;
23 case GREEN:t.action();break;
24 case YELLOW:t.action();break;
25 }
26 //name 枚举对象的常量名称
27 /*System.out.println(TrLight.RED.name());
28 //ordinal 枚举对象的序号,从 0 开始
29 System.out.println(TrLight.GREEN.ordinal());
30 //toString() 枚举对象的常量名称
31 System.out.println(TrLight.YELLOW.toString());*/
32 //valueOf(name) 根据 name 返回枚举类的常量对象
33 // System.out.println(TrLight.valueOf("RED"));
34 }
35 }
36 // 枚举类 格式 : enum 枚举类的名称
37 enum TrLight{
38 // 红绿黄
39 RED {
40 @Override
41 public void action() {
42 System.out.println(" 红灯停 ");
43 }
44 },GREEN {
45 @Override
46 public void action() {
47 System.out.println(" 绿灯行 ");
48 }
49 },YELLOW {
50 @Override
51 public void action() {
52 System.out.println(" 黄灯等待 ");
53 }
54 };
55 // 不同灯亮起时的行为
56 public abstract void action();
57 }
网络编程:
-
网络 :在不同的地域,通过终端设备 ( 台式机,笔记本, pad) 和传输设备 ( 路由器,交换机,网线 ) 进行连接的网状结
构。
-
网络的目的:
资源共享。
-
网络三要素 :
① IP :分配给互联网上的每台计算机的唯一地址。
1 》 IPV4:32 位 ,每 8 位换算成一个十进制。
点分十进制 : 255.255.255.255
分为 A-E 五类地址。
**① 127.0.0.1 /localhost 本地回环地址 代表本机地址。
2 》 IPV6: 128 位,
冒分十六进制: ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
3 》本机 ip 的查看: ipconfig
② 端口号: 0-65535 之间。
用来区分同一台计算机上不同的软件的。建议自定义的端口号从 8000 往后
。
③ 协议:互联网之间进行通信的规则。