android 设计模式学习

12 篇文章 0 订阅
本文介绍了Java中的三种设计模式:单例模式用于确保类只有一个实例;建造者模式通过步骤化构建复杂对象,允许部分字段为空;责任链模式实现请求的传递和处理,根据权限逐级审批。通过这些模式,可以提高代码的可读性和可维护性。
摘要由CSDN通过智能技术生成

1.单例模式

public class SingletionStarving {
    private static final SingletionStarving mInstance = new SingletionStarving();
    private SingletionStarving() { }
    public static SingletionStarving getInstance() {
        return mInstance;
    }
}

//SingletionStarving.getInstance();

2.builder模式

public class Student {
    private final int stuId;//必须
    private final String name;//必须
    private final int age;//可选
    private final int gender;//可选
    private final String address;//可选
    public int getStuId() {
        return stuId;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    public int getGender() {
        return gender;
    }
    public String getAddress() {
        return address;
    }
    private Student(StudentBuilder builder){
        this.stuId = builder.stuId;
        this.name = builder.name;
        this.age = builder.age;
        this.gender = builder.gender;
        this.address = builder.address;
    }
    public static class StudentBuilder{
        private final int stuId;
        private final String name;
        private int age;
        private int gender;
        private String address;
        public StudentBuilder(int stuId,String name){
            this.stuId = stuId;
            this.name = name;
        }
        public StudentBuilder setAge(int age){
            this.age = age;
            return this;
        }
        public StudentBuilder setGender(int gender){
            this.gender = gender;
            return this;
        }
        public StudentBuilder setAddress(String address){
            this.address = address;
            return this;
        }
        public Student build(){
            return new Student(this);
        }
    }
}



//        Student studen= new Student.StudentBuilder(1,"小明")//必填属性在构造方法中赋值
//                .setAge(1)//设置可选属性 年龄
//                .setGender(1)//设置可选属性 性别 默认1为男
//                .build();//对象构建完毕的标识,返回Student对象
//         Log.e("","studen=="+studen.getName().toString());

3.责任链模式

public interface Handler {
    /**
     * 处理请求
     * @param dayNums
     */
    void handleRequest(int dayNums);
    /**
     * 设置下一个执行者
     */
    void setSuccesor(Handler handler);
    /**
     * 获取下一个执行者
     * @return
     */
    Handler getNextSucccesor();
}

public class Leader implements Handler {
    public String mName;
    public Handler mNextHandler;
    public int mCouldHandlerNum;
    public Leader(String name, int couldHandlerNum) {
        mName = name;
        mCouldHandlerNum = couldHandlerNum;
    }
    @Override
    public void setSuccesor(Handler handler) {
        mNextHandler = handler;
    }
    @Override
    public Handler getNextSucccesor() {
        return mNextHandler;
    }

    //当请求天数少于 mCouldHandlerNum 即能够处理的最大天数,直接交给当前处理者处理
    //否则,交给下一个处理者处理。
    @Override
    public void handleRequest(int dayNums) {
        if (dayNums <= mCouldHandlerNum) {
            System.out.println(mName + " 同意了你的申请, dayNums = " + dayNums);
        } else {
            Handler nextSucccesor = getNextSucccesor();
            if (nextSucccesor != null) {
                nextSucccesor.handleRequest(dayNums);
            } else {
                System.out.println(mName + " 拒绝了你的申请 dayNums = " + dayNums);
            }
        }
    }
}


public class TeamLeader extends Leader {
    public TeamLeader(String name, int couldHandlerNum) {
        super(name, couldHandlerNum);
    }
}

public class GeneralManager extends Leader{
    public GeneralManager(String name, int couldHandlerNum) {
        super(name, couldHandlerNum);
    }
}

public class Departmentdirector extends Leader{
    public Departmentdirector(String name, int couldHandlerNum) {
        super(name, couldHandlerNum);
    }
}



//        Leader directLeader = new TeamLeader("TeamLeader", 3);
//        Leader departmentdirector = new Departmentdirector("Departmentdirector", 7);
//        Leader generalManager = new GeneralManager("GeneralManager", Integer.MAX_VALUE);
//
//        directLeader.setSuccesor(departmentdirector);//设置下一个执行者,从而形成链表
//        departmentdirector.setSuccesor(generalManager);
//
//        // 请假三天
//        directLeader.handleRequest(3);//TeamLeader 同意了你的申请, dayNums = 3
//        // 请假六天
//        directLeader.handleRequest(6);//Departmentdirector 同意了你的申请, dayNums = 6
//        // 请假100天
//        directLeader.handleRequest(100);//GeneralManager 同意了你的申请, dayNums = 100

总结

写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个关于 java开发 的学习思路及方向。从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。

由于内容较多就只放上一个大概的大纲,需要更及详细的学习思维导图的 点击我的Gitee获取
还有 高级java全套视频教程 java进阶架构师 视频+资料+代码+面试题!

全方面的java进阶实践技术资料,并且还有技术大牛一起讨论交流解决问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值