- 浏览: 91410 次
- 性别:
- 来自: 上海
文章分类
最新评论
在Abstract Factory模式中将具体的Product封装在具体Factory实现中,而客户仍只要面对Factory与Product的抽象介面,避免依赖于具体的Factory与Product,由于Factory封装了所必须的Product,所以要更换掉所有的元件,只要简单的抽换掉Factory就可以了,不用修改客户端的程式。
CustomDialog.java public class CustomDialog { private IButton button; private ITextField textField; public CustomDialog(IWidgetFactory widgetFactory) { setWidgetFactory(widgetFactory); } // 由于客户端只依赖于抽象的工厂,工厂如何实作并无关客户端的事 // 要抽换工厂并不需要改动客户端的程式 public void setWidgetFactory(IWidgetFactory widgetFactory) { setButton(widgetFactory.getButton()); setTextField(widgetFactory.getTextField()); } public void layoutAllComponents() { // layout all components } // 这边也是依赖抽象,实际改变了元件实例 // 客户端代码也不用更改 public void setButton(IButton button) { this.button = button; } public void setTextField(ITextField textField) { this.textField = textField; } public void showDialog() { this.paintDialog(); button.paintButton(); textField.paintTextField(); } public void paintDialog() { System.out.println("custom dialog paints...."); }}
IButton.java public interface IButton { public void paintButton(); }
ITextField.java public interface ITextField { public void paintTextField(); }
IWidgetFactory.java public interface IWidgetFactory { public IButton getButton(); public ITextField getTextField(); }
MacButton.java public class MacButton implements IButton { public void paintButton() { System.out.println("Mac button paints...."); }}
WindowsButton.java public class WindowsButton implements IButton { public void paintButton() { System.out.println("Windows button paints...."); }}
MacTextField.java public class MacTextField implements ITextField { public void paintTextField() { System.out.println("Mac textField paints...."); }}
WindowsTextField.java public class WindowsTextField implements ITextField { public void paintTextField() { System.out.println("Windows textField paints...."); }}
MacWidgetFactory.java public class MacWidgetFactory implements IWidgetFactory { public IButton getButton() { return new MacButton(); } public ITextField getTextField() { return new MacTextField(); }}
WindowsWidgetFactory.java public class WindowsWidgetFactory implements IWidgetFactory { public IButton getButton() { return new WindowsButton(); } public ITextField getTextField() { return new WindowsTextField(); }}
发表评论
-
小项目
2021-03-25 08:52 275小项目源码 -
开发流程参考
2017-09-28 16:19 0软件开发周期流程 -
eclipse svn icon
2017-04-26 16:31 0... -
tomcat 用户角色设置
2017-04-26 15:06 0tomcat-users.xml <role role ... -
linux
2017-02-06 18:17 0shutdown -h now 立马关机 shutdown - ... -
简单框架
2016-11-16 18:14 0简单框架 单机使用 tomcat7热部署 tomcat7:re ... -
tomcat
2016-10-25 14:12 0#!/bin/sh # description: 启动tom ... -
yahoo legal 14
2016-10-14 09:43 300Web应用性能优化黄金法 ... -
事务隔离级别
2016-09-27 17:27 0Read Uncommitted(读取未提交内容) ... -
Docker
2016-08-06 22:07 0http://m.open-open.com/m/lib/vi ... -
eclipse插件link方法
2016-04-09 17:40 0第一步:将各个插件单独防止在相应的插件目录中,目录可以在任何位 ... -
谷歌书签
2016-02-25 16:33 0谷歌书签地址连接 http://www.itnose.net ... -
自己的测试项目
2015-12-28 17:07 0自己的测试项目 -
test
2015-08-03 22:10 01.刷新页面是否调用getuserinfo 2.getuser ... -
内存缓存(in-memory cache)
2013-11-30 11:12 2211缓存原来作用是提高数据库访问性能。但是缓存不是数据库遮羞布,架 ... -
科普知识
2013-11-14 16:52 407密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中 ... -
eclipse
2013-06-17 10:19 559删除工程路径 eclipse\configuration\.s ... -
svn
2013-04-21 14:50 382下载并安装tigris svn server 创建中心库 s ... -
设计论
2012-12-28 11:45 620软件的开发 离不开设计 万不可盲目编写代码 1.在草稿上先思考 ... -
问题查询技巧
2012-12-20 17:15 596eclipse 文件check out搜索会受影响 查不出表 ...
相关推荐
"DesignPattern:C#设计模式示例"这个资源很可能是包含多个C#实现的设计模式示例代码库。 设计模式通常分为三类:创建型、结构型和行为型。每种模式都解决了特定场景下的问题,并提供了良好的代码组织和扩展性。 ...
23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm”供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) 生成...
本资源“DesignPattern::pencil:设计模式_java实现以及详解”提供了一套详细的学习材料,帮助开发者理解和应用设计模式。 该资源的作者是“养码青年-Style”,他通过这个项目记录了自己的设计模式学习过程。鼓励...
pattern.p002.abstractfactory : 抽象工厂模式。 pattern.p003.singletonEH : 单例模式(饿汉式)。 pattern.p003.singletonLH : 单例模式(懒汉式)。 pattern.p003.singletonNew : 单例模式(完美解决方案)。 ...
设计模式是软件工程中的一种最佳实践,用于解决在软件设计中常见的...以上就是这个DesignPattern小Demo中可能会涵盖的设计模式,通过这些模式的实例,你可以更好地理解和应用它们到实际项目中,提升你的Java编程能力。
在这个“DesignPattern”仓库中,可能包含了对各种设计模式的详细解释、示例和应用。 设计模式分为三大类:创建型、结构型和行为型模式。创建型模式主要关注对象的创建过程,如单例模式(Singleton)、工厂模式...
本教程的"designpattern-master"可能包含以上各种设计模式的实例代码和详细解释,帮助学习者通过实践掌握这些模式。在实际项目中,灵活运用这些设计模式可以提高代码质量,使项目更加健壮和易于维护。对于PHP开发者...
DesignPattern-master这个压缩包可能包含了一个关于设计模式的项目或者教程资源。 设计模式分为三类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)和行为型模式(Behavioral Patterns)...
1. 创建型模式:这类模式涉及到对象的创建,如单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这些模式提供了创建对象...
接着,工厂模式(Factory Method)用于创建对象,它提供了一个接口来创建对象,但让子类决定实例化哪一个类。Java中的抽象工厂类可能如下所示: ```java public abstract class ShapeFactory { public abstract ...
在`Head_First_DesignPattern_src`中,你可以找到`AbstractFactory`、`Product`和`ConcreteProduct`类,它们展示了简单工厂和抽象工厂模式的应用。 3. 观察者模式(Observer): 观察者模式定义了对象之间的一对多...
"designPattern:设计模式相关代码实现"这个项目,显然提供了不同设计模式在Java语言中的实际应用示例。 在Java世界里,设计模式主要分为三大类:创建型模式、结构型模式和行为型模式。每种模式都针对特定的编程问题...
- 抽象工厂模式(Abstract Factory):提供一个接口,用于创建相关或依赖对象的家族,而无需指定具体类。 - 建造者模式(Builder):将复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 - 原型...
这个名为"DesignPattern"的压缩包文件很可能包含了一个Java实现的各种设计模式的示例程序。 在这个"DesignPattern-master"目录中,我们可以期待找到一系列与设计模式相关的Java源代码文件(.java),每个文件或...
本资源"DesignPattern:设计模式.net源代码"提供了一套基于.NET实现的设计模式示例,旨在帮助程序员更好地理解和应用这些模式。 在"DesignPattern-master"这个压缩包中,你可能找到的文件结构和内容包括: 1. **...
2. 抽象工厂模式(Abstract Factory Pattern):提供一个接口用于创建相关或依赖对象的家族,无需指定具体类。它允许客户端使用抽象的接口来创建一组相关或相互依赖的对象。实现部分详细介绍了抽象工厂模式的结构和...
创建型模式关注对象的创建,如单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。这些模式帮助我们控制实例化过程,使代码更具灵活性和可扩展性。 结构型模式涉及到如何组合类和对象...
- 抽象工厂模式(Abstract Factory):提供一个接口,用于创建相关或依赖对象的家族,而无需指定具体类。 - 建造者模式(Builder):将复杂对象的构建与其表示分离,使同样的构建过程可以创建不同的表示。 - 对象...