关于面向对象设计模式:面向对象设计原则
开闭准则(Open Closed Principle,OCP):当利用的需要扭转时,在不批改软件实体的源代码或者二进制代码的前提下,能够扩大模块的性能,使其满足新的需要。 里氏替换准则(Liskov Substitution Principle,LSP):子类能够扩大父类的性能,但不能扭转父类原有的性能。也就是说:子类继承父类时,除增加新的办法实现新增性能外,尽量不要重写父类的办法。 依赖倒置准则(Dependence Inversion Principle,DIP):高层模块不应该依赖低层模块,两者都应该依赖其形象;形象不应该依赖细节,细节应该依赖形象。其核心思想是:要面向接口编程,不要面向实现编程。 违反依赖倒置准则代码(顾客每更换一家商店,都要批改一次代码,这显著违反了开闭准则。存在以上毛病的起因是:顾客类设计时同具体的商店类绑定了,这违反了依赖倒置准则): class Customer{ public void shopping(ShaoguanShop shop){ //购物 System.out.println(shop.sell()); }}class Customer{ public void shopping(WuyuanShop shop){ //购物 System.out.println(shop.sell()); }}批改后的合乎依赖倒置准则代码(定义“婺源网店”和“韶关网店”的独特接口 Shop,顾客类面向该接口编程,其代码批改如下:): public class DIPtest{ public static void main(String[] args){ Customer wang=new Customer(); System.out.println("顾客购买以下商品:"); wang.shopping(new ShaoguanShop()); wang.shopping(new WuyuanShop()); }}//商店interface Shop{ public String sell(); //卖}//韶关网店class ShaoguanShop implements Shop{ public String sell(){ return "韶关土特产:香菇、木耳……"; } }//婺源网店class WuyuanShop implements Shop{ public String sell(){ return "婺源土特产:绿茶、酒糟鱼……"; }} //顾客class Customer{ public void shopping(Shop shop){ //购物 System.out.println(shop.sell()); }}繁多职责准则(Single Responsibility Principle,SRP):繁多职责准则规定一个类应该有且仅有一个引起它变动的起因,否则类应该被拆分 ...