zoukankan      html  css  js  c++  java
  • 单例设计模式&枚举&网络编程

    设计模式:

    是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结
    : 套路    模式

    前人已经经过大量测试得出的设计模式

     使用设计模式的好处:提高代码的可重用性与可靠性。

    单例设计模式 :  
    单个实例 == 》单个对象   意味着只能创建一个对象,就好电脑的任务管理器,只能有一个窗口。

    单例设计模式:
    ① 私有构造方法
    ② 对外提供一个对象,供其他的类访问,但是该对象需要封装,通过 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 }

    网络编程:

    1. 网络 :在不同的地域,通过终端设备 ( 台式机,笔记本, pad) 和传输设备 ( 路由器,交换机,网线 ) 进行连接的网状结
    构。
    2. 网络的目的:
    资源共享。
    3. 网络三要素 :
    ① 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 往后

    ③ 协议:互联网之间进行通信的规则。

  • 相关阅读:
    识别浏览器信息,判断是否安卓或者苹果手机
    thinkphp5.0 配置文件加载路径说明
    thinkphp5.0 url跳转
    微信小程序--picker
    JavaScript和php数组的定义
    地点下来框的实现(php)
    微信小程序入门(持续更新)
    Vue 拖拽组件 vuedraggable 和 vue-dragging
    递归
    js 为什么有些在原始数据上进行修改,有些进行浅拷贝或深拷贝呢
  • 原文地址:https://www.cnblogs.com/ywzbky/p/10725898.html
Copyright © 2011-2022 走看看