进阶JAVA语言第六天

代理设计模式和系统类

学习目的

代理模式是Java常见的设计模式之一。所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。在现实生活中,这种情形非常的常见,比如请一个律师代理来打官司。而代理设计模式的核心是利用接口实现数据回调。学习了解一些主要的系统类可以方便在今后的学习中快速高效的做项目。

知识点

  1. 代理设计模式
  2. String类的主要方法及使用
  3. 常见方法
  4. 可变字符串

解析

  1. 代理设计模式(利用接口实现数据回调)
    1.1 定义⼀个接⼝,统⼀管理传递数据的⽅式 ,并且能保证每个使⽤
    Setting的类都必须实现这个⽅法
/设置界面 设置字体大小和颜色
public class Setting {
    //记录为谁设置 记录下我做完事情之后将数据返回给谁
    FontSettingInterface obj;
    //创建对象后 告诉是谁
    public Setting(FontSettingInterface obj){
        this.obj=obj;
    }

    //开始设置
    public void startSetting(){
        System.out.println("开始设置");
        System.out.println("........");
        System.out.println("设置完毕 即将返回结果");

        //1.如果有可以访问的属性 直接通过属性给值
        //比较少用 但对方没办法第一时间知道自己需要的值有了
//        r1.color="red";

//        r1.size=18;

        //2.通过方法来回调
        obj.change("red",26);
    }
    public interface FontSettingInterface{
        void change(String color,int size);
    }
}

1.2 使用Setting

  • 实现接口
  • 传递对象
  • 实现方法
//阅读界面 显示文本
public class Read implements Setting.FontSettingInterface {
    public void gotoSetting(){
        Setting setting=new Setting(this);
        setting.startSetting();
    }

    public void change(String color,int size){
        System.out.println("改变后的颜色:"+color+"大小:"+size);
    }

1.3 main函数调用显示

/**
 * 接口实现回调 代理设计模式
 */
public class MyClass {
    public static void main(String[] args) {
       Read read=new Read();
       read.gotoSetting();
    }
}
  1. String类的主要方法及使用
    2.1 不可变的字符串 一旦创建 内容不能改变
    2.2相同:
  • == 比较两个对象是否相同:地址
  • equals 比较内容是否相同
 String str1 = "abc";
        String str2 = "abcd";

        System.out.println(str1 == str2);
        System.out.println(str1.equals(str2));

2.3 字符串的创建

String str1 = "abc";

2.4 StringBuffer / StringBuilder 可变字符串

         //使用构造方法
        //null 和 "" 的区别
        String str3 = new String();//没意义
//使用字节数组 创建一个字符串
        byte[] name = {'A','b','c'};
        String str4 = new String(name);
        System.out.println(str4);

        byte[] name2 = {97,98,99};
        String str5 = new String(name2);
        System.out.println(str5);

        //使用字节数组的一部分 创建一个字符串
        String str6 = new String(name,0,2);
        System.out.println(str6);

        char[] hello = {'你','好','啊'};
        String h = new String(hello);
        System.out.println(h);
  1. 常见方法
方法 用途 实例
charAt 获取字符串中的一个字符 char c = h.charAt(0);System.out.println(c);
compareTo 两个字符串的比较 int result = str4.compareToIgnoreCase(str5);System.out.println(result);
concat 两个字符串的连接 String nStr = str5.concat(h);System.out.println(nStr);
contains 判断一个字符串是否包含另外一个字符串 boolean r = "hello".contains("lle");System.out.println(r);
endsWith 判断是否以某个字符串结尾 String url = "http://www.baidu.com";if (url.endsWith(".com")){System.out.println("网址");}
equals 两个字符串进行比较 if ("abc".equals("ABC")){System.out.println("相同");}else{System.out.println("不相同");}
indexOf 判断一个子字符串在另外一个字符串里面的位置,不存在返回值为-1 String i1 = "hello Java"; int index = i1.indexOf("Javeee"); System.out.println(index);
length 获取字符串的长度 String a="sss";a.length
index 获取子字符串substring 从index到结尾 String sStr = i1.substring(6);System.out.println(sStr);
substring 从0开始 到5 String sStr2 = i1.substring(4,7);System.out.println(sStr2);
toCharArray 将字符串转化为字符数组 API
toLowerCase / toUpperCase 将所有字符转化为小写 API
trim 将字符串前面和后面的空格字符删除 API
  1. 可变字符串
    4.1 StringBuffer/StringBuilder :
  • StringBuffer 线程安全 效率不高
  • StringBuilder 线程不安全的 效率更高
    4.2 常用方法(insert, append ,delete, replace)
        // 创建的同时先准备好6个字符的空间
        StringBuilder sb = new StringBuilder(6);
方法 用途 实例
append 在末尾追加 sb.append("I");sb.append(" Love");sb.append(" Android");System.out.println(sb);
insert 插入数据 sb.insert(2, "also ");System.out.println(sb);
replace 替换 // start end stringint start = sb.indexOf("Android"); int end = start + "Android".length();sb.replace(start,end,"you!!!");System.out.println(sb);
reverse 反转 sb.reverse();

总结

代理设计模式还不是很理解,加强学习,坚持!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容