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() ; } };
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。