06 2017 档案
摘要:抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖的接口,而无需指定它们具体的类。 涉及到多个产品系列的问题,工厂方法模式组合叫抽象工厂模式。如下图涉及到大于1个的产品,Oracle、mysql两个产品。应用的具体工厂是由两种不同的数据库实现,可以很方便的切换两个数据
阅读全文
摘要:观察者模式(Observer):又叫 发布-订阅 (Publish/Subscribe)模式 观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。 Subject类 ConcreteSubject
阅读全文
摘要:建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 如果我们用了建造者模式,那么用户就只需要指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。 建造者模式:主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的
阅读全文
摘要:外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 何时用外观模式? 分三个阶段:首先,再设计初期阶段,应该要有意识的将不同的两个层分离,比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层、业务逻辑层和表示层的层与层之
阅读全文
摘要:单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。 软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离。其实要去判断是否应该分离出来类,也不难,那就是如果你能够想到多余一个的动机去改变一个类,那么这个类就就具有多余一个的职责,就应该考虑类的职责分离。 开放-封闭原则:是说软件实体(
阅读全文
摘要:模板方式模式(TemplateMethod):定义一个操作中的骨架算法,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同时,我们通常考虑用模板方法模式来
阅读全文
摘要:原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式分为浅复制、深复制 一、浅复制 ShallowWorkExperience.java类 ShallowResume.java类 ShallowBusiness.java类 二、深复制 DeepW
阅读全文
摘要:工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 简单工厂模式违背了"开放-封闭"原则(再添加控制类时在简单工厂类中要修改),工厂方法模式在添加控制类时,再添加控制类对应的工厂,克服了简单工厂违背了"开放-封闭"原则。 Leifeng.jav
阅读全文
摘要:代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 GiveGift.java类 Pursuit.java类 Proxy.java类 SchoolGirl.java类 Business.java类
阅读全文
摘要:装饰模式(Decorator):动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 装饰模式是为已有功能动态地添加更多功能的一种方式。装饰模式提供了非常好的解决方案,它把每个装饰功能放在单独的类中,并让这个类包装它所要装饰的对象,因此,当需要执行特殊行为时,客户代码就可
阅读全文
摘要:策略模式(Strategy),是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同。它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间耦合。 策略模式就是用来封装算法的,但在实践中,我们发现可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要
阅读全文
摘要:简单工厂模式:不符合 开放-封闭 原则,对每一次扩展时都要更改工厂类,这就是对修改开放了,当然不符合 开放-封闭 原则。 Operator.java 类: OperatorAdd.java类 OperatorDevide.java类 OperatorMul.java类 OperatorSub.jav
阅读全文