设计模式
踏雁寻花
分享带来乐趣
展开
-
设计模式的分类
按照目的分类:创建型、结构型、行为型三种1、创建型模式主要是目的是创建对象(一共有5种):工厂方法模式(Factory Method)、抽象方法模式(Abstract Factory)、建造者模式(Bulder)、原型模式(Prototype)、单例模式(Singleton)2、结构型模式主要用于处理类或对象的组合(一共有7种):适配器模式(Adapter)、桥接模式(Brid原创 2012-11-28 14:23:12 · 1019 阅读 · 0 评论 -
简单工厂模式的适用环境
1、工厂类负责创建的对象比较少:由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂。2、客户端只知道传入工厂类的参数,对于如何创建对象不关心:客户端既不需要关心创建细节,甚至连类名都不需要记住,只需要知道类型所对应的参数。原创 2012-11-30 11:26:29 · 1666 阅读 · 0 评论 -
工厂方法模式的适用环境
1、一个类不知道它所需要的对象的类:客户端不需要知道具体产品类的类名,只需要知道对应的工厂即可,具体的产品的对象由具体的工厂类创建;客户端需要知道创建具体产品的工厂类。2、一个类通过其子类来指定创建哪个对象:3、将创建对象的任务委托给多个工厂子类中的某一个,客户端在使用时可以无须关心是哪一个工厂子类创建产品子类,,需要时再动态指定,可将具体工厂类的类名存储在配置文件中或数据库中。原创 2012-11-30 11:31:59 · 1551 阅读 · 0 评论 -
抽象工厂模式的优缺点
优点:1、抽象工厂模式隔离了具体类的生产,使得客户并不需要知道什么被创建。2、当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。3、增加新的具体工厂和产品族很方便,无须修改已有系统,符合“开闭原则”。 缺点:增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性。原创 2012-12-01 11:13:10 · 18183 阅读 · 3 评论 -
抽象工厂模式适用环境
1、一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有类型的工厂模式都是重要的。2、系统中有多于一个的产品族,而每次只使用其中某一产品族。3、属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来。4、系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于具体实现。原创 2012-12-01 11:17:00 · 2607 阅读 · 2 评论 -
单例模式优缺点
主要优点:1、提供了对唯一实例的受控访问。2、由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。3、允许可变数目的实例。 主要缺点:1、由于单利模式中没有抽象层,因此单例类的扩展有很大的困难。2、单例类的职责过重,在一定程度上违背了“单一职责原则”。3、滥用单例将带来一些负面问题,如为了节省资源将数原创 2012-12-03 09:50:28 · 78229 阅读 · 9 评论 -
单例模式的适用环境
1、系统只需要一个实例对象2、客户调用类的单个实例只允许适用一个公共的访问点,除了该访问点,不能通过其他途径访问该实例。原创 2012-12-03 09:52:34 · 3921 阅读 · 0 评论 -
两种单例模式
1、饿汉式单例类 public class EagerSingleton { private static final EagerSingleton instance = new EagerSingleton(); private EagerSingleton(){} public static EagerSingleton getInstance() { return inst原创 2012-12-03 10:44:31 · 1934 阅读 · 0 评论 -
适配器模式优缺点
优点:1、将目标类和适配者类解耦2、增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性3、灵活性和扩展性都非常好,符合开闭原则类适配器还有的优点:1、由于适配器类是适配者类的子类,因此可以再适配器类中置换一些适配者的方法,使得适配器的灵活性更强。类适配器的缺点:1、对于Java、C#等不支持多重继承的语言,一次最多原创 2012-12-22 16:14:47 · 11684 阅读 · 2 评论