Java基础7(解耦、引入工厂模式、代理设计模式、适配器设计模式、内部类)

类设计的注意事项:类的设计主要是父类的设计

子类最好不要继承一个已经完全实现的类,因为一旦发达向上转型,所调用的方法,一定是被子类覆盖过的方法,所以只会继承抽象类和接口。

解耦

耦合度是什么?

两个对象之间相互依赖的程度,是衡量代码独立性的一个指标。

软件开发追求高/低耦合度?

软件开发追求低耦合度

怎么才能降低代码的耦合度?

降低代码的耦合度是一个非常重要的实践,它有助于提高代码的可维护性、可读性和可扩展性。

引入工厂模式:

解决解耦

代理设计模式(静态代理):

扩展性,同时保护核心功能,提示代码安全性和健壮性

适配器设计模式:

在继承借口时,就必须全部实现接口中的方法,这样很多用不到的也要实现很麻烦,所以就有适配类的出现,即用一个抽象类并用抽象类里的空方法体来实现接口中的所有方法,然后从这个抽象类中继承,就可以有选择的实现相关方法

内部类

内部类:也会生成自己独立class文件,命名的规则是outname$innername

内部类可以直接访问外部类的私有变量

第一种:依赖外部类,定义一个创建内部类的方法

class JavaDemo

{

 public static void main(String[] args) 

 {

  Outter out = new Outter();

  //第一种:依赖外部类,定义一个创建内部类的方法

  Outter.Inner in = out.getInner();

  System.out.println(in); 

 }

}

class Outter

{

 private static int number = 10;

 public void testOut(){

  System.out.println("outter");

 }

 //内部类:也会生成自己独立的class文件,命名的规则是outname$innername

 static class Inner

 {

  public void testInner(){

   System.out.println("inner"+number);

  }

 }

 public Inner getInner(){

  Inner in = new Inner();

  return in;

 }

}

第二种:依赖外部类的实例,然后利用out.new        Inner();

class JavaDemo

{

 public static void main(String[] args) 

 {

  Outter out = new Outter();

 

  //第二种:依赖外部类的实例,然后利用out1.new Inner();

  Outter out1 = new Outter();

  Outter.Inner in1 = out1.new Inner();

  System.out.println(in1);

  in1.testInner();

 }

}

class Outter

{

 private static int number = 10;

 public void testOut(){

  System.out.println("outter");

 }

 //内部类:也会生成自己独立的class文件,命名的规则是outname$innername

 static class Inner

 {

  public void testInner(){

   System.out.println("inner"+number);

  }

 }

 public Inner getInner(){

  Inner in = new Inner();

  return in;

 }

}

静态内部类创建:new        Outter.Inner(),静态内部只能访问静态变量

class JavaDemo

{

 public static void main(String[] args) 

 {

  Outter out = new Outter();

  

  //静态内部类创建:new Outter.Inner(),静态内部类只能访问静态变量

  Outter.Inner in2 = new Outter.Inner();

  System.out.println(in2);

  in2.testInner();

 }

class Outter

{

 private static int number = 10;

 public void testOut(){

  System.out.println("outter");

 }

 //内部类:也会生成自己独立的class文件,命名的规则是outname$innername

 static class Inner

 {

  public void testInner(){

   System.out.println("inner"+number);

  }

 }

 public Inner getInner(){

  Inner in = new Inner();

  return in;

 }

}

匿名内部类:没有名字,编译成class,系统会默认使用1、2、3等作为名字

类可以定义在函数类

class JavaDemo 

{

    public static void main(String[] args) 

    {

        System.out.println("Hello World!");

        new AA(){ //1、定义类  2、实现接口 3、创建实例  new  AA()

            public void testAA(){

                System.out.println("testAA");

            }

        }.testAA();

    }

}

interface AA

{

    void testAA();

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值