永发信息网

软件设计模式的相近术语

答案:1  悬赏:50  手机版
解决时间 2021-01-26 15:34
  • 提问者网友:刺鸟
  • 2021-01-25 20:48
软件设计模式的相近术语
最佳答案
  • 五星知识达人网友:人间朝暮
  • 2021-01-25 21:28
对某个问题经常出现的、在设计中应该尽量避免的、坏的设计方案被称为反模式。 基础模式
委托模式
接口模式
代理模式 抽象工厂模式(Abstract Factory) ,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
生成器模式 (Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
工厂方法模式(Factory Method) ,定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。
原型模式 (Prototype) ,用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。 适配器模式 (Adapter) ,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
桥接模式(Bridge) ,将抽象部分与它的实现部分分离,使它们都可以独立地变化。
组合模式(Composite) ,将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。
容器模式
修饰模式 (Decorator) ,动态地给一个对象添加一些额外的职责。就扩展功能而言, 它比生成子类方式更为灵活。
扩展性模式
外观模式
享元模式
管道与过滤器模式
代理模式(Proxy) ,为其他对象提供一个代理以控制对这个对象的访问。 责任链模式 (Chain of Responsibility) ,为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
命令模式 (Command) ,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
柯里化模式
事件监听器模式
解释器模式
迭代器模式
中介者模式
备忘录模式 (Memento) ,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态。
观察者模式(Observer) ,定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
状态模式 (State) ,允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。
策略模式 (Strategy) ,定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。
模板方法模式
访问者模式 (Visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
层次访问者模式 模式 Action at a distance
模式 Balking
模式 Guarded suspension
模式 Scheduler
模式 Read write lock
模式 Double checked locking
模式 Disable job requests while running job 模式 Scheduled task
模式 User interface
模式 Disable job requests while running job 此原则是由Bertrand Meyer提出的。原文是:Software entities should be open for extension,but closed for modification。就是说模块应对扩展开放,而对修改关闭。模块应尽量在不修改原(是原,指原来的代码)代码的情况下进行扩展。那么怎么扩展呢?我们看工厂模式factory pattern:假设中关村有一个卖盗版盘和毛片的小子,我们给他设计一光盘销售管理软件。我们应该先设计一光盘接口。如图:【pre】______________|<>|| 光盘 ||_____________||+卖() || ||_____________|【/pre】而盗版盘和毛片是其子类。小子通过DiscFactory来管理这些光盘。代码为: publicclassDiscFactory{publicstatic光盘getDisc(Stringname){return(光盘)Class.forName(name).getInstance();}}有人要买盗版盘,怎么实现呢?
public class 小子{ public static void main(String【】 args){ 光盘 d=DiscFactory.getDisc(盗版盘); 光盘.卖(); } }
如果有一天,这小子良心发现了,开始卖正版软件。没关系,我们只要再创建一个光盘的子类正版软件就可以了。不需要修改原结构和代码。怎么样?对扩展开放,对修改关闭。开-闭原则 工厂模式是对具体产品进行扩展,有的项目可能需要更多的扩展性,要对这个工厂也进行扩展,那就成了抽象工厂模式。 就是说要少用继承,多用合成关系来实现。我曾经这样写过程序:有几个类要与数据库打交道,就写了一个数据库操作的类,然后别的跟数据库打交道的类都继承这个。结果后来,我修改了数据库操作类的一个方法,各个类都需要改动。牵一发而动全身!面向对象是要把波动限制在尽量小的范围。
在Java中,应尽量针对Interface编程,而非实现类。这样,更换子类不会影响调用它方法的代码。要让各个类尽可能少的跟别人联系,不要与陌生人说话。这样,城门失火,才不至于殃及池鱼。扩展性和维护性才能提高
理解了这些原则,再看设计模式,只是在具体问题上怎么实现这些原则而已。张无忌学太极拳,忘记了所有招式,打倒了玄幂二老,所谓心中无招。设计模式可谓招数,如果先学通了各种模式,又忘掉了所有模式而随心所欲,可谓OO之最高境界。呵呵,搞笑,搞笑!(JR)
依赖倒转原则抽象不应该依赖与细节,细节应当依 类为子类继承,一般包含这个系的共同属性和方法。注意:好的继承关系中,只有叶节点是具体类,其他节点应该都是抽象类,也就是说具体类是不被继承的。将尽可能多的共同代码放到抽象类中。 7 迪米特法则最少知识原则。不要和陌生人说话。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯