java学习之三种常用设计模式

一、适配器设计模式

简单来说,就是通过一个间接类来选择性的来覆写一个接口

interface Window{public void open() ;	// 打开窗口public void close() ;	// 关闭窗口public void icon() ;	// 最小化public void unicon() ;	// 最大化
}
abstract class WindowAdapter implements Window{public void open(){}public void close(){}public void icon(){}public void unicon(){}
};
class MyWindow extends WindowAdapter{public void open(){System.out.println("打开窗口!") ;}
};
public class AdpaterDemo{public static void main(String args[]){Window win = new MyWindow() ;win.open() ;}
}

二、工厂设计模式

设计一个选择吃橘子或者苹果的例子,一般设计时可能会直接在主类中实例化对象,但通过工厂设计模式通过一个间接类可以减少主类中(客户端)的代码量

interface Fruit{public void eat() ;
}
class Apple implements Fruit{public void eat(){System.out.println("吃苹果。。。") ;}
};
class Orange implements Fruit{public void eat(){System.out.println("吃橘子。。。") ;}
};
class Factory{	// 工厂类public static Fruit getFruit(String className){Fruit f = null ;if("apple".equals(className)){f = new Apple() ;}if("orange".equals(className)){f = new Orange() ;}return f ;}
};
public class InterDemo{public static void main(String args[]){Fruit f = Factory.getFruit(args[0]) ;if(f!=null){f.eat() ;}}
}

三、代理设计模式

以讨债为例

interface Give{public void giveMoney() ;
}
class RealGive implements Give{public void giveMoney(){System.out.println("把钱还给我。。。。。") ;}
};
class ProxyGive implements Give{	// 代理公司private Give give = null ;public ProxyGive(Give give){this.give = give ;}public void before(){System.out.println("准备:小刀、绳索、钢筋、钢据、手枪、毒品") ;}public void giveMoney(){this.before() ;this.give.giveMoney() ;	// 代表真正的讨债者完成讨债的操作this.after() ;}public void after(){System.out.println("销毁所有罪证") ;}
};
public class ProxyDemo{public static void main(String args[]){Give give = new ProxyGive(new RealGive()) ;give.giveMoney() ;}
};


转载于:https://www.cnblogs.com/walkthehorizon/p/4388141.html


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部