商店类中有 sell() 方法,顾客类通过该方法购物。以下代码定义了顾客类通过北京网店 BeijingShop 购物:<br>classCustomer {<br>publicvoidshopping(BeijingShop shop) {<br>//购物<br>System.out.println(shop.sell());<br>}<br>}<br>但是,这种设计存在缺点,如果该顾客想从另外一家商店(如上海网店 ShanghaiShop)购物,就要将该顾客的代码修改如下:<br>classCustomer {<br>publicvoidshopping(ShanghaiShop shop) {<br>//购物<br>System.out.println(shop.sell());<br>}<br>}<br>顾客每更换一家商店,都要修改一次代码,这明显违背了开闭原则。存在以上缺点的原因是:顾客类设计时同具体的商店类绑定了,这违背了依赖倒置原则。解决方法是:定义“北京网店”和“上海网店”的共同接口 Shop,顾客类面向该接口编程这样,不管顾客类 Customer 访问什么商店,或者增加新的商店,都不需要修改原有代码了,其类图如图 1 所示。<br>图1 顾客购物程序的类图
下载作业帮<br><img><br><img><br><img><br><h3>下载作业帮安装包</h3><br><img><br><img><br><img><br><img><br><img><br><img><br><h3>扫二维码下载作业帮</h3><br>拍照搜题,秒出答案,一键查看所有搜题记录<br>?题目<br><img><br><img><br><img><br><img><br><h3>扫二维码下载作业帮</h3><br>拍照搜题,秒出答案,一键查看所有搜题记录<br>优质解答<br>反证法,假设a+b与a-b平行,则a+b=k(a-b),k为不是零的常数<br>移向之后得(k-1)a=(k+1)b,这说明a与b是共线的,就产生矛盾了!<br>作业帮用户<br><img>