给Android开发人员的AOP文档

一、什么是AOP

关于OOP

大家对于OOP(面向对象编程)肯定不会陌生,核心思想为:万事万物皆对象,OOP推荐开发者把所有的事物当作对象来处理。

假设有一条鱼,我们就可以创建一个Fish类并构造出它的实例来当作是这条鱼并对它进行操作。OOP就是我们把鱼抽象成为Fish类的过程,通过这个过程我们可以获得更加清晰搞笑的逻辑单元划分。

关于AOP

AOP(面向切面编程),这个中文名字翻译的很到位:切面,可以脑部一下假设有一个平面,然后用一个工具去切这个平面,就形成了一个切面的过程。这个平面就是我们的程序,程序里面会有很多功能,像:登录,设置,支付等。假设有一个工具它的作用是检查是否登录,在程序每次支付时要检查是否登录,这个工具就可以像一把刀一样切向支付前的位置,这整个过程就是一个面向切面的过程。

如果你理解了的话其实可以发现OOP和AOP有着本质上的差异。AOP面对的是处理某个过程或步骤,会有切入点,会有切入的动作。然而OOP是一个帮助我们更加清晰搞笑划分事物单元的一种思想。

二、关于AOP的例子

一般我们听到AOP这个名字是在Java后台开发,后台所使用的spring框架一个很核心点就是AOP,通过AOP来解耦。我们作为Android开发人员为什么要去学习这个呢?AOP作为一种编程思想,作用的场景是不区分安卓和后台的,就像各种设计模式,用在合适的地方就能解决痛点。

现在有一个程序,有一个人类的接口,里面有一个方法sayHello()

public interface Person {
    void sayHello();
}

和它的实现类:男人

public class Man implements Person {
   
    @Override
    public void sayHello() {
        Log.i("AopLog", "你好,Android");
    }
}

然后我们有3个界面,分别是FirstActivity、SecondActivity、ThirdActivity,3个页面中只有同一个操作,就是让一个男人sayHello

public class FirstActivity extends AppCompatActivity {
   

    Button mSayHello;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_frist);

        mSayHello = findViewById(R.id.sayHello);
        mSayHello.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                test();
            }
        });
    }

    public void test() {
        Person man = new Man();
        man.sayHello();
    }
}

点击按钮输出的结果为:

你好,Android

其实我们只需要关注3个页面中的test()方法就好了。现在我想要在sayHello的前后分别加一行分割线,让输出的结果变成这样:

---------我是上分割线---------
你好,Android
-
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值