GOF23种设计模式
设计原则:
1. 单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因
2. 开放-封闭原则(OCP):软件实体(类、模块、函数等)应该可以扩展,但是不可修改。即对于扩展是开放的, 对于修改是封闭的。
3. 依赖倒转原则: A. 高层模块不应该依赖低层模块,两个都应该依赖抽象。B.抽象不应该依赖细节,细节应该依赖抽象。说白了,就是要针对接口编程,不要对实现编程。
4. 迪米特法则(LoD):如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果其中一个类需要调用另一个类的某个方法的话,可以通过第三者转发这个调用。基本思想是强调类之间的松耦合。
23种设计模式
1.创建型模式:
(1).工厂方法模式
(2).抽象工厂模式
(3).建造者模式
(4).原型模式
(5).单例模式
2.结构型模式:
(6).适配器模式
(7).桥模式
(8).组合模式
(9).装饰模式
(10).外观模式
(11).享元模式
(12).代理模式
3.行为型模式
(13).解释器模式
(14).模板方法模式
(15).职责链模式
(16).命令模式
(17).迭代器模式
(18).中介者模式
(19).备忘录模式
(20).观察者模式
(21).状态模式
(22).策略模式
(23).访问者模式
Android中的常见设计模式
1. 组合模式
View和ViewGroup。组合模式使得用户对单个对象View和组合对象ViewGroup的使用具有一致性。可以简化客户代码。基本对象和组合对象有一致性,用户不用区分它们。
2. 模板方法模式
定义一个操作中的算法的骨架,而将一些算法的步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
如View中draw方法, onDraw(), dispatchDraw()都定义为抽象方法,自定义View的话,一般重写onDraw,dispatchDraw方法即可
if (!verticalEdges && !horizontalEdges) {
// Step 3, draw the content
if (!dirtyOpaque) onDraw(canvas);
// Step 4, draw the children
dispatchDraw(canvas);
// Step 6, draw decorations (scrollbars)
onDrawScrollBars(canvas);
// we're done...
return;
}
3. 观察者模式
Listener都相当于一个观察者,对一些事件的响应都进行观察,当发现有事件发生就进行相应的处理
4. 单例模式
Application类
5. 适配器模式
在 android 中常见的适配器类有: BaseAdapter 、SimpleAdapter 等
6. 工厂模式
Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.ic_action_search)
BitmapFactory顾名思义,就是位图工厂,专门用来将指定的图片转化为指定的位图Bitmap。因为图片来源的不同可能导致图片大小,格式类型等的多种多样,这样就导致了生成目标对象的复杂度,因此通过工厂统一的加工成同样大小,类型的”标准件“,大大简化了代码的复杂度与工作量。
7. 代理模式
Android系统中利用AIDL定义一种远程服务时就需要用到代理模式。
8. 享元模式
9. 建造者模式Builder
如Uri.Builder,AlertDialog.Builder. Builder通过setTitle(),setMessage(),setIcon()等方法在create()中构造出一个AlertDialog对象。
然后客户可以把AlertDialog对象show出去。
10. 策略模式
定义一系列的算法,把它们一个个封装起来,并且使它们可互相替换。
android.animation.Interpolator
Animation不同动画的实现,主要是依靠Interpolator的不同实现而变。