摘要:
1. 概念 工厂方法:一抽象产品类派生出多个具体产品类;一抽象工厂类派生出多个具体工厂类;每个具体工厂类只能创建一个具体产品类的实例。 即定义一个创建对象的接口(即抽象工厂类),让其子类(具体工厂类)决定实例化哪一个类(具体产品类)。“一对一”的关系。 抽象工厂:多个抽象产品类,派生出多个具体产品类;一个抽象工厂类,派生出多个具体工厂类;每个具体工厂类可创建多个具体产品类的实例。 即提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们的具体的类。“一对多”的关系。2. UML工厂方法:抽象工厂:3. 代码工厂方法:public interface Product{ }... 阅读全文
摘要:
1. 概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点。2. UML图:3.代码:(1)懒汉模式:只有在自身需要的时候才会创建。运行时获得对象,它在整个应用的生命周期只有一部分时间在占用资源。 ?public class Singleton { private static Singleton singletonInstance; private Singleton() { } public static synchronized Singleton GetInstance() { if (singletonInstance == null) ... 阅读全文
摘要:
1.继承抽象类用泛化(Generalization)2.实现接口用实现(Realization)3. 依赖,一个类中的方法或功能必须依靠另一一个类的方法来完成,即一个类的变化会引起另一个类的变化。 关联, 一个类中,知道并可以使用另一个类的可访问元素,常见形式为一个类以属性的形式出现在另一类中。例如:http://www.cnblogs.com/millen/archive/2009/02/23/1396414.html 阅读全文
摘要:
1.概念:将一个接口转换成客户希望的另外一个接口。(该模式使得原本不兼容的类可以一起工作)2.UML图(1)对象的Adapter模式结构图(2)类的Adapter模式结构图3.代码(1)对象适配器?public interface Target { public void Request(); } public class Adaptee { public void SpecificRequest() { System.out.println("这是原始标准接口!"); } } public class Adapter implements Target { private 阅读全文
摘要:
1. 概念:定义一个算法的骨架,而将一些实现步骤延迟到子类中。 把不变的行为搬到超类,去除子类中重复的代码来体现他的优势。2. UML图:3.代码:?public abstract class Templete { private void beforeOperation() { System.out.println("This acton before the operation!"); } private void afterOperation() { System.out.println("This acton after the operation!&qu 阅读全文
摘要:
1.概念为其他对象提供一种代理以控制对这个对象的访问。2.UML图:3.代码:?//抽象角色: public abstract class Subject { abstract public void request(); } //真实角色:实现了Subject的request()方法。 public class RealSubject extends Subject { public void request() { System.out.println("From real subject."); } } //代理角色: public class ProxySubjec 阅读全文
摘要:
1. 概念动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。[由于继承的静态特质使其缺乏灵活性;且随着子类的增多、组合,会导致更多子类的膨胀。类应设计的对扩展开放,对修改关闭。装饰的意思:就是包装一下。把另的对象包装一下。]2. UML图3.代码/************业务接口 Component************/ public interface Component { void operation(); }/************业务接口 Component*******... 阅读全文
摘要:
1.概念 定义一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。2.UML图3.代码interface Subject { public void attach(Observer observer); public void detach(Observer observer); void notifyObservers(); } public class ConcreteSubject implements Subject{ private Vector observersVector = new Vector(); pub... 阅读全文
摘要:
简单地说,就好象我要一座房子住,可是我不知道怎么盖(简单的砌墙,层次较低),也不知道怎么样设计(建几个房间,几个门好看,层次较高), 于是我需要找一帮民工,他们会砌墙,还得找个设计师,他知道怎么设计,我还要确保民工听设计师的领导,而设计师本身也不干活,光是下命令,这里砌一堵墙,这里砌一扇门,这样民工开始建设,最后,我可以向民工要房子了。在这个过程中,设计师是什么也没有,除了他在脑子里的设计和命令,所以要房子也是跟民工要,记住了! 就象国内好多企业上erp一样,上erp,首先得找软件公司呀,找到软件公司后,软件公司说,我只知道怎么写软件,就知道怎么实现,不清楚整个erp的流程。好,那我们还... 阅读全文
摘要:
1.概念 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 [构建与表示分离,同构建不同表示] 与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品。即建造模式可以强制实行一种分步骤进行的建造过程。 建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。 举个简单的例子,如汽车,有很多部件,车轮,方向盘,发动机还有各种小零件等等,部件很多,但远不止这些,如何将这些部件装配成一部汽车,这个装配过程也很复杂(需要很好的组装技术),.. 阅读全文