设计模式心得

来源:互联网 发布:淘宝1111和1212 编辑:程序博客网 时间:2024/06/06 16:45

目标:可复用、可扩充、可维护


策略模式:定义了“算法族”,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。


观察者模式:出版者+订阅者,最常见的就是监听事件。定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。设计原则为了交互对象之间的松耦合设计而努力。(instanceof 通过该关键字来判断传入传入类型)

 

装饰者模式:装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的行为,以达到特定的目的。动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。在Java API中IO是典型的装饰者模式。

 

工厂模式:创造者类和产品类,让子类决定该创建的对象是什么,来达到将对象创建的过程封装的目的。工厂方法模式,定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。工厂模式将对象的实例化给封装起来。

抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

 

单例模式:确保一个类只有一个实例,并提供一个全局的访问点。

 

命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。

 

适配器与外观模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。对象适配器利用组合的方式将请求传送给被是陪着。类适配器是继承被适配者和目标类。外观模式将一个或数个类的复杂的一切都隐藏在背后,只显露出一个干净美好的外观,这样简化了接口。提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

 

模板方法模式:定义了一个算法的步骤,并允许子类为一个活多个步骤提供实现。在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以再不改变算法结构的情况下,重新定义算法中的某些步骤。










1、单一职责原则(SingleResponsibility Principle)

说明:就一个类而言,应该仅有一个引起它变化的原因。如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责

 

2、开放封闭原则(Open ClosedPrinciple)

说明:开放封闭原则,指的是,新增功能时可以不修改原有的代码。也就是对扩展开放,对修改封闭。比如,可以通过实现一个已有的接口,或者继承一个已有的类,来扩展新功能,而不修改原有的代码。

 

3、里氏替换原则(LiskovSubstitution Principle)

说明:里氏替换原则是指,子类的实例应该能够替换任何其超类的实例。违反此原则的经典例子是,从长方形中派生一个正方形。因为,正方形要求长宽一起变化,而长方形无此限制,则在长方形出现的地方,无法用正方形来替换。假设rectangle.setWidth(4); rectangle.setLength(5); rectangle.getArea(); 应该等于20,而如果用正方形来替换长方形的话,结果为25。

 

4、接口分离原则(InterfaceSegregation Principle)

说明:使用多个专门的接口比使用单一的总接口要好。不要强迫用户使用他们不用的方法。一个类对另外一个类的依赖性应当是建立在最小的接口上的。一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。

 

5、依赖倒置原则(DependencyInversion Principle)

说明:面向过程的开发中,高层直接调用底层,造成高层依赖于底层的具体实现。依赖倒置原则认为,高层应该调用抽象的接口,底层则应实现这个接口,两者都依赖于接口。这样解除了高层和底层的耦合。



0 0
原创粉丝点击