设计模式一
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式一,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3910字,纯文字阅读大概需要6分钟。
内容图文
引言
设计模式存在的意义?为什么使用设计模式?使用设计模式可以为我带来哪些好处?
在写者看来,设计模式部分原因是可以少写代码;同时建立一种大家都认可规范、制度,可以使代码有利于后续的维护(毕竟挖坑一时爽,填坑火葬场)。
设计模式基础
设计模式说到底,还是基于Java 的三大特性中的多态和继承 + 接口。
封装
封装(Encapsulation),把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。
使用方式
很简单,利用Java关键字private、default、protected、public控制访问权限。一般在自定义类内部使用private防止外部调用。
特点
1、对成员变量更准确的控制。
2、可以隐藏内部程序实现细节。
这个其实够呛。查看代码流程可以通过反编译;调用接口可以通过反射,我对于这点有点怀疑。对于程序员来说,知道游戏机的地点(class文件路径)、知道游戏机开机按钮(调用方法名字+参数),完全可以通过钥匙(反射)为所欲为。
3、外部成员无法修改一封装好的程序代码。
…
为什么使用封装?
在写者看来,封装其实也是权限控制的一种。
举个例子,一个人(对象)在家(环境)中可以做很多为所欲为的事情,比如洗澡;但是在公园(环境)都不会这么做。是这个人在公园(环境)中不能这么做么?其实是这个人告诉自己,某些事情是(private)的,需要自己在家(环境)才可以做,在公园(环境)不能做。
不过在上面的时候,写者也说过了,通过反射的方式,可以跳过private的限制。但是反射一般在特定环境使用,大多业务情况下,还是使用new关键字创建对象,private关键字依旧会对 对象 调用方法或属性 形成限制。
使用
很简单,使用Java关键字private、default、protected、public控制访问权限。
下面展示 Admin 对象类。
在Admin admin = new Admin();情况下,
1、private修饰的属性,无法通过admin.id获取或者赋予属性值。
2、统一提供 setXXX,getXXX方法 设置 或者 赋予 属性值。
理解:不要让一个方法代表两种可能。对象.属性 既可以赋予属性值,也可以获取属性值,属于不规范的行为;使用 setXXX,getXXX方法 分别赋予 设置属性值、获取属性值 职责,符合单一设计原则规范。
public class Admin {
private Integer id;
private String adminName;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAdminName() {
return adminName;
}
public void setAdminName(String adminName) {
this.adminName = adminName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
继承
继承,就是子类继承父类的属性和方法,使得子类的实例对象具有父类的属性和方法。
注意事项
1、支持单继承,一个子类只能有一个父类。
2、支持多级继承,Son类有一个Father父类,Father类有一个GrandFather父类。
3、一个父类可以有多个子类,Father父类可以有Son子类和Daugther子类。
4、子类可以继承父类的所有属性,方法。但是受到 关键词(private、default、protected、public)限制的属性和方法 无法访问,形成一种无法被继承的假象。
特点
最明显的就是可以提高代码可复用性。
重写(override)
?是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。外壳不变,核心重写!
注意:重新方法 的 方法名、参数、返回值 必须和要重写的方法保持一致;static方法属于类,不属于实例,无法被重新;final关键字修饰的方法不能被重写;关键词(private、default、protected、public)会限制方法重写。
重载(overload)
在一个类里面,方法名相同,而参数不同就是重载。返回类型、访问修饰符可以相同也可以不同。
每个重载的方法或构造函数都必须有一个独一无二的参数类型列表。
?最常见的地方就是构造器的重载。
this,super关键字
super关键字,一般在子类的成员方法或构造方法中,访问父类未受到 关键词(private、default、protected、public)限制的属性和方法 ;super(…)代指父类的构造方法,子类的构造方法可以引用父类未受到 关键词(private、default、protected、public)限制的构造方法。
this关键字,在本类成员方法中访问本类的成员变量或成员方法;在本类的构造方法中访问本类的其他构造方法或成员方法。
多态
简介
父类型的引用可以指向子类型的对象,或者接口类型的引用可以指向实现该接口的类的实例。
继承关系下,如果父类和子类拥有相同的方法(父类方法被子类重写),不管是直接使用子类进行实例化,还是使用父类的引用类型指向子类进行实例化,其对象调用被重写的方法都是执行子类的方法;如果是父类特有或子类特有,那么分别执行自己的方法。
特点
低耦合(消除类型之间的耦合关系)、灵活、可扩充、可替换。
内容总结
以上是互联网集市为您收集整理的设计模式一全部内容,希望文章能够帮你解决设计模式一所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。