门面模式:将所有执行的方法同意归纳到一个总类中执行,调用者不需要考虑其他业务实现只要调用总接口即可,最后再由总接口统一按照业务调用其他核心业务代码,提高了系统以来,松散耦合,遵循了最少知道原则。缺点是不符合开闭原则。属于结构性设计模式。
public class Drugstore {
//采购药品
public void purchaseMedicine(Medicine medicine){
if(medicine.getCount()<3){
Pharmaceut pharmaceut = new Pharmaceut(medicine);
if(pharmaceut.isAllow()){
System.out.println("符合药厂规则,可以申请采购单");
}else{
System.out.println("不符合药厂规则,不予采购");
}
}else{
System.out.println("数量足够不必采购");
}
}
}
public class Medicine {
private String name; //药品名字
private boolean isRestrict = true; //是否管控药
private int count = 0;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isRestrict() {
return isRestrict;
}
public void setRestrict(boolean restrict) {
isRestrict = restrict;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
//药厂
public class Pharmaceut {
Medicine medicine = null;
public Pharmaceut(Medicine medicine){
this.medicine = medicine;
}
public boolean isAllow(){
if(!medicine.isRestrict()){
System.out.println("非管制药可直接发货");
return true;
}
System.out.println("管制类药物,不允许发货");
return false;
}
}
public class Test {
public static void main(String[] args) {
Drugstore drugstore = new Drugstore();
Medicine medicine = new Medicine();
medicine.setCount(1);
medicine.setRestrict(false);
drugstore.purchaseMedicine(medicine);
}
}