Android多元的设计模式

今天很开心能阅读《源码设计模式设计与解析》这本大作。

1. 工厂模式

最核心的语句为:Product a = new Factory.createProduct();

一般生产者和机器都会有抽象父类和实现具体业务逻辑的子类。更完美的进阶是:

public abstract class Factory {

public abstract <T extends Product> T createProduct(Class<T> clz) ;

}

而具体的工厂类,则为

public <T extends Product> T create Product(Class<T> clz) {

Product p = (Product) Class.forName(clz.getName()).newInstance();//这里应该是用到了反射,并通过类名声明了对象。关于反射,我因为没有练习,所以很快就忘了。

}

所以最后的实现就很完美了:

Product a = new Factory.createProduct(ConcreteProductB.class);


当然,再如果不需要抽象类的话,可以用简单工厂模式(静态工厂模式):

public static Product createProduct() {

return new ConcreteProduct();

}

一个特别尴尬的事情是:onCreate方法相当于工厂方法。

背景:activityThread的attach方法会将其绑定到AMS中,开始不但的读取消息队列中的消息并分发消息。

这又透露了一个消息,就是重载继承的用法:@Override onCreate(),这个方法是子类继承父类,并且父类会在某个时刻调用这个由子类重写的方法。


工厂模式是很普遍的一个模式,太普遍了,以至于很多其他模式都会或多或少的混合这种模式。


2.抽象工厂模式

抽象工厂模式有点没看懂。它的主要思路是为了应对弱关系的组合,为相关或者相互依赖对象提供一个借口,不用指定具体类。相当于在工厂模式上抽出了一个接口,让有差异的产品能够统一管理。

public interface IEngine() {

void engine();

}

public class DomeSticEngine implements IEngine {

@Override public void engine() {

//

}

public class DomeSticEngine2 implements IEngine {

@Override public void engine() {

//

}


3.责任链模式
作者绝对是鬼才,或者说创造这些模式名称的人是鬼才。
你生活中遇到的需要代码的设计思路好像都可以被总结成一种模式。
面试考察你的事你做过什么,这是最总要的。
遍历责任人,直到找到处理对象,负责一直传播下去。
broadcastReceiver:
@Override public void onReceive(Context context, Intent intent) {
if (intent.getIntExtra("1000", -1000) == 100) {
abortBroadcast();
} else {
Bundle b = new Bundle();
b.putString("new", "Message from SecondReceiver");
setResultExtras(b);
}
}

4.解释器模式
例如主谓宾文法用来解释语言。所以解释器可以简单理解为翻译机。
解释器模式我很怕自己歪解,它提供一个接口解释一个特定的上下文。

5.命令模式
将行为(命令)调用者和实现者解耦,增加一个中间层,方便两边的拓展。
命令模式暴露了许多设计模式的通病:类的膨胀以及大量衍生类的创建。

6.备忘录模式
onSaveInstanceState为经典教案。

7.迭代器模式
据我观察,应该是讲遍历的操作单独封装成一个类。

8.中介者模式
太神奇,解决某类问题而提出的设计模式。将系统从网站结构变成以中介者/调停者为中心的星型结构,达到降低系统的复杂性,提高可拓展性的作用。
比如多个UI控件的状态会相互影响,则以activity作为中介者。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值