面向holder编程

当一个界面中的试图太过于复杂的时候 ,可以将它分成一个一个的holder,每一个模块放在一个holder中,这样使界面里的代码复杂度降低,还可以让每一个模块的开发者独立完成,解耦和。

继承baseholder 在activity、fragment等中new一个子类holder然后addView

package com.hongji.kcj_mi.holder.base;

import android.content.Context;
import android.util.SparseArray;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

/**
 * 创建出他的子类 然后addView的形式添加到framelayout中即可
 * Created by xk on 2016/8/15 21:28.
 */
public abstract class BaseHolder {
    protected View rootView;
    protected Context context;
    private SparseArray<View> views;

    public BaseHolder(Context context){
        this.context=context;
        views=new SparseArray<View>();
        init();
        initView();
        initData();
    }

    /**
     * 在这里完成初始化操作,在布局没有实例完之前的初始化
     */
    protected abstract void init();

    /**
     * 在这里实例化布局相关的组件
     */
    protected abstract void initView();

    /**
     * 在这里为相应的组件添加事件,初始化状态,或者联网请求数据
     */
    protected abstract void initData();

    /**
     * 得到该holder维护的view
     * @return view的根布局
     */
    public View getRootView(){
        return rootView;
    }

    public TextView getTextView(int viewId) {
        return retrieveView(viewId);
    }

    public Button getButton(int viewId) {
        return retrieveView(viewId);
    }

    public ImageView getImageView(int viewId) {
        return retrieveView(viewId);
    }

    public View getView(int viewId) {
        return retrieveView(viewId);
    }


    /**
     * 根据id检索view
     * @param viewId
     * @param <T>
     * @return
     */
    protected <T extends View> T retrieveView(int viewId) {
        View view = views.get(viewId);
        if (view == null) {
            view = rootView.findViewById(viewId);
            views.put(viewId, view);
        }
        return (T) view;
    }
}
一个经典的Java面向对象的编程实例就是创建一个银行账户类(Account),这个类可以用来管理一个银行账户的信息和交易。 以下是一个简单的Account类的示例代码: ```java public class Account { private String accountNumber; private String accountHolderName; private double balance; public Account(String accountNumber, String accountHolderName, double balance) { this.accountNumber = accountNumber; this.accountHolderName = accountHolderName; this.balance = balance; } public String getAccountNumber() { return accountNumber; } public String getAccountHolderName() { return accountHolderName; } public double getBalance() { return balance; } public void deposit(double amount) { balance += amount; } public void withdraw(double amount) { if (balance >= amount) { balance -= amount; } else { System.out.println("Insufficient balance!"); } } public void displayAccountInfo() { System.out.println("Account Number: " + accountNumber); System.out.println("Account Holder Name: " + accountHolderName); System.out.println("Balance: " + balance); } } ``` 在这个示例中,Account类具有三个私有变量(accountNumber、accountHolderName和balance),以及一个构造函数和几个公共方法。构造函数用于初始化对象,deposit()和withdraw()方法用于存款和取款操作,displayAccountInfo()方法用于显示账户信息。 使用这个类可以创建一个新的银行账户对象,然后可以对这个对象进行存款、取款和查询余额等操作,如下所示: ```java public class AccountTest { public static void main(String[] args) { Account account = new Account("123456", "John Smith", 1000.0); account.deposit(500.0); account.withdraw(200.0); account.displayAccountInfo(); } } ``` 输出结果为: ``` Account Number: 123456 Account Holder Name: John Smith Balance: 1300.0 ``` 这个示例展示了如何使用Java面向对象的编程思想来创建一个简单的银行账户管理系统。通过定义一个Account类并使用它来创建对象,可以轻松地管理银行账户的信息和交易。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值