1、设计模式之软件设计七大原则
1、开闭原则
1.1、定义
一个软件实体如类、模块和函数应该`对扩展开放,对修改关闭`。用抽象构建框架,用实现扩展细节。 优点:提高软件系统的可复用性以及可维护性
1.2、代码演示
public interface ICourse { Integer getId(); String getName(); Double getPrice(); }
public class JavaCourse implements ICourse{ private Integer Id; private String name; private Double price; public JavaCourse(Integer id, String name, Double price) { this.Id = id; this.name = name; this.price = price; } public Integer getId() { return this.Id; } public String getName() { return this.name; } public Double getPrice() { return this.price; } }
// 如果需要在原有功能基础上添加一个获取打折价格的功能,开闭原则建议不要修改原有接口,这里可以继承原有JavaCourse类, // 在原有功能之上扩展 public class JavaDiscountCourse extends JavaCourse { public JavaDiscountCourse(Integer id, String name, Double price) { super(id, name, price); } public Double getDiscountPrice(){ return super.getPrice()*0.8; } }
2、开闭原则
2.1、定义
`高层模块不应该依赖低层模块`,二者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。 针对接口编程,不要针对实现编程。 优点:可以减少类之间的耦合性,提高系统的稳定性,提高代码可读性和可维护性,可降低修改程序所造成的风险。
2.2、代码演示
public interface ICourse { void studyCourse(); } public class JavaCourse implements ICourse { @Override public void studyCourse() { System.out.println("Geely在学习Java课程"); } } public class PythonCourse implements ICourse { @Override public void studyCourse() { System.out.println("Geely在学习Python课程"); } }
public class Geely { public void setiCourse(ICourse iCourse) { this.iCourse = iCourse; } private ICourse iCourse; public void studyImoocCourse() { iCourse.studyCourse(); } }
public class Test { public static void main(String[] args) { Geely geely = new Geely(); geely.setiCourse(new JavaCourse()); geely.studyImoocCourse(); geely.setiCourse(new FECourse()); geely.studyImoocCourse(); } }
3、单一职责原则
3.1、定义
不要存在多于一个导致类变更的原因。一个类/接口/方法只负责一项职责。 优点:降低类的复杂度、提高类的可读性、提高系统的可维护性、降低变更引起的风险。
3.2、代码演示
// 不推荐的写法 public class Bird { public void mainMoveMode(String birdName){ if("鸵鸟".equals(birdName)){ System.out.println(birdName+"用脚走"); }else{ System.out.println(birdName+"用翅膀飞"); } } }
public class FlyBird { public void mainMoveMode(String birdName){ System.out.println(birdName+"用翅膀飞"); } } public class WalkBird { public void mainMoveMode(String birdName){ System.out.println(birdName+"用脚走"); } }
public class Test { public static void main(String[] args) { // 不推荐写法 Bird bird = new Bird(); bird.mainMoveMode("大雁"); bird.mainMoveMode("鸵鸟"); // 推荐写法,功能单一 FlyBird flyBird = new FlyBird(); flyBird.mainMoveMode("大雁"); WalkBird walkBird = new WalkBird(); walkBird.mainMoveMode("鸵鸟"); } }
4、单一职责原则
4.1、定义
用多个专门的接口,而不使用单一的总接口。客户端不应该依赖它不需要的接口。 一个类对另一个类的依赖应该建立在最小的接口上。 建立单一接口,不要建立庞大臃肿的接口。 `尽量细化接口,接口中的方法尽量少`。 适度原则,一定要适度。 优点:符合我们常说的高内聚低耦合的设计思想,
4.2、代码演示
相关推荐
lweiyue 2020-05-05
Freeman00 2020-05-01
swimmer000 2019-11-09
姜海强 2020-08-01
conganguo 2020-06-09
虚拟主机 2020-05-01
TingBen 2020-05-05
howema 2020-02-21
codercheng 2020-02-15
姜海强 2020-01-14
codercheng 2020-01-01
yw00yw 2019-12-14
姜海强 2019-12-08
Ingram 2019-11-05
Ingram 2019-11-03
TingBen 2014-10-25
chengrile 2014-05-26