JDK和Android中设计模式的典型应用(持续更新中)

创建型模式

单例模式:Runtime,Application

工厂方法:Collection#iterator()

抽象工厂:

建造者模式:AlertDialog$Builder

原型:Object#clone(),Cloneable。

 

结构型模式

装饰者模式:BufferedInputStream,InputStream,FileInputStream组成。                                  

                     Context,ContextImpl,ContextWrapper,ContextThemeWrapper,Application,Service,Activity;

                      Cursor,AbstractCursor,CursorWrapper;

适配者模式:Reader,InputStreamReader,InputStream。

                     Adapter,ArrayAdapter,ListAdapter,BaseAdapter。

                    BulkCursorToCursorAdapter,IBulkCursor;CursorToBulkCursorAdatpter,CrossProcessCursor;

代理模式:动态代理。IActivitymanager,ActivityManagerProxy,ActivityNanagerNative。

组合模式:View,ViewGroup组成的结构。

桥接模式:

外观模式:Context类,以startActivity为例。

享元模式:Integer#valueOf(),Character.valueOf()。常量池。

 

行为型模式

 模板方法模式:AbstractQueuedSynchronizer中的acquire(),acquireShared()是模板方法,而tryAcquire和tryAcquireShared是子类必须实现的方法,是模板中的子方法。其实JDK中许多Abstract类中的非抽象方法都是模板方法,所以模板方法在jdk中是很常用的。

状态模式:WifiService,WifiStateMachine,StateMachine,DefaultState,DriverUnloadedState构成了状态模式。

策略模式:Comparator以及其他使用了含有policy的类名的类很可能都涉及了策略模式

命令模式:ThreadPoolExecutor,callable,Runnable。android中的消息循环。通过handler把请求封装成一个command传给消息队列。

迭代器模式:Collection#iterator(),Iterator。Android数据库中的Cursor#moveToNext().

 

责任链模式:

ClassLoader的委托模式及StateMachine中的子状态及父状态之间就是一条责任链,StateMachine结合了状态模式和责任链模式。

ViewRootImpl中的InputStage设计。在ViewRootImpl#setView()中创建了责任链中的七个处理节点。代码如下:

                mSyntheticInputStage = new SyntheticInputStage();
                InputStage viewPostImeStage = new ViewPostImeInputStage(mSyntheticInputStage);
                InputStage nativePostImeStage = new NativePostImeInputStage(viewPostImeStage,
                        "aq:native-post-ime:" + counterSuffix);
                InputStage earlyPostImeStage = new EarlyPostImeInputStage(nativePostImeStage);
                InputStage imeStage = new ImeInputStage(earlyPostImeStage,
                        "aq:ime:" + counterSuffix);
                InputStage viewPreImeStage = new ViewPreImeInputStage(imeStage);
                InputStage nativePreImeStage = new NativePreImeInputStage(viewPreImeStage,
                        "aq:native-pre-ime:" + counterSuffix);

                mFirstInputStage = nativePreImeStage;

 

观察者模式:Observer,Observable。View,Listenter。广播,BroadcastReceiver。Adapter#registerDataSetOberver()及DataSetOberver。ContentProvider组件系统中的IContentService(Observable)和ContentObserver。

备忘录模式:Activity#onSaveInstanceSate(Bundle),onRestoreInstanceState(Bundle),Bundle.

中介者模式:Android中的锁屏功能就用到了中介者模式,KeyguardService(锁屏服务)通过KeyguardViewMediator(锁屏中介者)来协调各种Manager的状态以达到锁屏的功能。这里KeyguardService和各种Manager等等都充当了同事的角色。

访问者模式:无

解释器模式:

 

桥接模式:IContentProvider,Transport,ContentProvider。IContentProvider和Transport为Interface角色,ContentProvider为Implementation角色。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值