標籤:設計模式 代理模式 原廠模式 適配模式
一、適配器設計模式
簡單來說,就是通過一個間接類來選擇性的來覆寫一個介面
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() ;}};
java學習之三種常用設計模式