@TOC代码设计原则
1:里氏替换原则
子类继承父类时,字类可以扩展父类的功能,但是不要修改父类原有的功能。否则考虑重新继承一个合适的父类。
例1:
举一个简单的例子,什么鱼不会游泳,可能会有什么答案,比方说木鱼,死鱼等等。
//定义一个鱼类
class Fish{
public void swimming(){
system.out.println("i can swimming");
}
}
//定义一个木鱼
class WoodenFish extends Fish{
public void Knock(){
system.out.println("i am used to beated");
}
}
//ceshi
public class test{
public static void main(Strings[] args){
WoodenFish wf = new WoodenFish();
wf.swimming();
}
}
2:依赖倒置原则
尽量面向接口编程,尽量依赖抽象类。
例2:
比方说吃菜,每个人都有一个拿手好菜,想吃不同的好菜
public class tt {
public static void main(String[] args){
Lisa lisa = new Lisa();
System.out.println(lisa.cook());
Ben ben = new Ben();
System.out.println(ben.cook());
}
}
interface Cook{
public String cook();
}
class Lisa implements Cook{
@Override
public String cook() {
return "麻坡豆腐";
}
}
class Ben implements Cook{
@Override
public String cook() {
return "麻辣香锅";
}
}
3:单一职责原则
一个类应该承担一个职责。
**例3:**教师负责传授知识,辅导员负责管理班级
class Teacher{
void impartingKnowledge(){
system.out.println("传授知识");
}
}
class Instructor{
void manageClass(){
system.out.println("管理班级");
}
}
4:接口隔离原则
把大的接口拆分为小的具体的接口,每个类有专门的接口。
**例4:**将oracle数据文件入到hive
可以分为获取文件阶段和上传入库阶段
interface DownFile{
void connectOracle();
void downloadFile();
}
interface UploadFile{
void connectHive();
void scanFile();
void uploadFile();
}
class OracleTohive implements DownFile,UploadFile{
public Test(){};
public static DownFile getDoenFile(){
return (DownFile)new OracleTohive();
}
public static UploadFile getUploadFile(){
return (UploadFile)new OracleTohive();
}
void connectOracle(){
system.out.println("连接oracle");
}
void downloadFile(){
system.out.println("把oracle的数据下载到本地");
}
void connectHive(){
system.out.println("连接hive");
}
void scanFile(){
system.out.println("扫描本地文件");
}
void uploadFile(){
system.out.println("将本地文件上传到hive");
}
}
5:迪米特法则
如果两个对象之间依赖性低或者关系不强,尽量不产生消息传递,由第三方传递。
**例5:**员工有问题可以直接找直属领导,由直属领导向上级反映。如投诉或者辞职。
class Employee{
public String name;
Employee(String name){
this.name = name;
}
public setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public String complaint(){
return "工资太低";
}
public String resignation(){
return this.name+"辞职";
}
}
class Boss{
private String name;
Boss(String name){
this.name = name;
}
public setName(String name){
this.name = name
}
public String getName(){
return this.name;
}
public void receiverMessage(String message){
system.out.println(this.name+"get到了"+message);
}
}
class Manager{
private Employee employee;
private Boss boss;
public setEmployee(Employee employee){
this.employee = employee;
}
public setBoss(Boss boss){
this.boss = boss;
} public void sendMessage(){
boss.receiverMessage(employee.complaint);
}
}
class test{
public static void main(Strings[] args){
Manager manage = new Manager();
manage.setEmployee(new Employee("小强"));
manage.setBoss(new Boss("大佬"));
manage.sendMessage;
}
}