面向对象设计模式的六大基本原则(设计类的原则)

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//方法设计(算法设计)

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//类设计原则(面向对象设计原则)

http://blog.csdn.net/zhengzhb/article/category/926691

1.单一责任原则SRP(Single Responsibility Principle):

一个类只有一个引起变化的原因。

一个类只有一个独立责任,不负责其他职责

2.开放封闭原则OCP(Open Closed Principle):

软件实体对扩展开放,对修改封闭。

对功能扩展开放,对功能修改封闭。

3.里氏替换原则LSP(Liskov Substitution Principle):

子类的实例能够替换其父类的实例。

子类尽量不重写父类,尽量用扩展。

4.依赖倒置原则DIP(Dependency Inversion Principle):

依赖抽象不要依赖具体实现。

设计的类依赖接口

5.接口分离原则ISP(Interface Segregation Principle):

使用多个专门的接口比使用单一的总接口要好。一个类对另一个的依赖性建立在最小的接口上。

6.迪米特法则LoD(Law of Demeter):也称为最少知识原则LKP(Least Knowledge Principle)

一个对象应该对其他对象有最少的了解。

设计类的时候用用别人越少,用别人越简单越好

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//类之间关系设计(设计模式)

http://blog.csdn.net/zhengzhb/article/category/926691

---------------------------------------------------------------------------------------------------------------

//创建型模式(类之间创建与被创建的解决方案)(abps)

*SimpleFactory简单工厂模式

*Factory Method工厂方法模式

*Abstract Factory抽象工厂模式(工厂是主类)(解决多个子类生成实例的问题,方便扩展添加子类)

http://jishudaren.iteye.com/blog/2295901

*Builder生成器模式(生成器是主类)(复杂对象创建过程与表示分离的解决方案)

diector定义产品的构建过程,builder创建部件和组装产品,并提供返回产品的接口。

http://jishudaren.iteye.com/blog/2295872

Prototype原型模式(类实例复用问题的解决方案)

实现要点:用已存在的类A实例创另一个类A实例,可以用A的clone方法。

 (http://jishudaren.iteye.com/blog/2295773

*Singleton单例模式(只准生成一个类实例的解决方案)

实现要点:uniqueInstance是本身静态实例,静态方法instance()是获得或创建实例uniqueInstance 。

http://jishudaren.iteye.com/blog/2295768

 ---------------------------------------------------------------------------------------------------------------

//结构型模式(类之间结构调整降耦的解决方案)(ABCDFFP)

Adapter适配器模式* (老接口适应新接口的解决方案)

(把已有的接口转化成需要的接口)(主类适配器)

http://jishudaren.iteye.com/admin/blogs/2295133

Bridge桥接模式* (使接口和实现独立变化的解决方案)

(接口是一个类A,实现是一个类B,A引用B)(主类是A)

http://jishudaren.iteye.com/admin/blogs/2295118) 

Composite组合模式*(使用树状结构的解决方案)

(A不继承B,而引用使用B)(主类是A)

http://jishudaren.iteye.com/admin/blogs/2295125

Decorator装饰模式(可以使功能独立逐渐加强的解决方案)

(在本类的fun中调用被装饰者的同名方法fun并且在调用后再加上自己的功能加强的一些逻辑代码)(主类是装饰者)

http://jishudaren.iteye.com/admin/blogs/2295128

Facade外观模式* (统一外观不暴露子系统解决方案)

(让接口更好看更简洁,隐藏下面复杂的接口)(主类是外观类)

http://jishudaren.iteye.com/admin/blogs/2295129

Flyweight享元模式(复用频繁使用的对象解决方案)

实现要点,有一个缓存管理器,缓存复用对象。复用对象有唯一标识。

http://jishudaren.iteye.com/admin/blogs/2295131

Proxy代理模式*(处理和控制真实对象解决方案)

(为对象提供一种代理以控制对这个对象的访问)(主类是代理者)

http://jishudaren.iteye.com/admin/blogs/2295132

---------------------------------------------------------------------------------------------------------------

//行为型模式(类之间某种行为的解决方案)

Chain Of Responsibility 职责链模式 

Command命令模式 

Interpeter解释模式 

Iterator迭代者模式(集合遍历的解决方案)

        实现要点:迭代器持有集合引用,并知道遍历的第一个,当前位置,下一个,结束。集合创建并返回迭代器。

Mediator中介者模式*(多类相互交互改成通过一个中间者交互的解决方案)

        实现要点:中介者持有同事列表,和提供通讯接口(要能查到指定的同事),同事持有中间者引用。

Memento 备忘录模式 

Observer观察者模式* (行为依赖的解决方案)

         实现要点,被观察者Subject维持一个观察者Observer列表,被观察者变化时调用观察者的方法。

State状态模式*(同一个调用类在不同状态下有不同反应的解决方案)

         实现要点,类可以设置不同状态,状态里有这个类这个状态下的反应。

Strategy策略模式*(同一个调用类在不同策略下有不同策略实现的解决方案)

         实现要点,类可以设置不同策略,策略里有这个类在这个策略下方法现实。

Template Method模板方法模式(固定步骤行为的解决方案)

         实现要点:固定步骤在父类中定义成抽象方法。

Visitor 访问者模式(对象可以选择个不同访问器的解决方案)

        实现要点,某个元素接受某个访问器,这个访问器在访问这个元素,本质是元素选择不同的访问器

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//项目结构(框架设计模式)

1.mvc mvp mvvm

http://wenzongliang.iteye.com/blog/2240284

android中的mvc,mvp对应

http://www.tuicool.com/articles/2qMnmi

2.三层结构

UI层

---------

业务逻辑层(商务逻辑层)

---------

数据层

http://baike.baidu.com/link?url=xsVBhJ9vQNIL4v6T0agt40Rlk_n0lCvCyGiqlh2PP5lUWUJWkilTRebAoqRlygbCLIsCsaTU1WL011-vy5sf3K

猜你喜欢

转载自jishudaren.iteye.com/blog/2295003