当前位置: 首页 > news >正文

厦门学校网站建设做高端网站的网络公司

厦门学校网站建设,做高端网站的网络公司,棋牌游戏平台,产品开发详细流程图在开发组件的时候比如button、text等#xff0c;需要对这些组件做比较多的初始化工作#xff0c;比如初始化长度等。传统的开发方案如下#xff1a; 图 传统开发方案UML 上面的方案组件创建及组件的其他业务操作耦合在一起#xff0c;违背了单一职责原则#xff1b;在客户… 在开发组件的时候比如button、text等需要对这些组件做比较多的初始化工作比如初始化长度等。传统的开发方案如下 图 传统开发方案UML 上面的方案组件创建及组件的其他业务操作耦合在一起违背了单一职责原则在客户端Client需要知道具体的组件类名才能创建对应的组件。 1 工厂方法模式概述 定义一个用于创建对象的接口让子类决定将哪一个类实例化。针对不同的产品提供不同的工厂系统提供一个与产品等级结构对应的工厂等级。 图 工厂方法模式UML Product: 抽象产品类是工厂模式所创建对象的超类型也是产品对象的公共父类。 ConcreteProduct: 具体的产品类由专门的具体工厂创建具体工厂和具体产品之间一一对应。 Factory: 抽象工厂类声名了创建产品的方法是工厂方法模式的核心所有创建对象的工厂类都必须实现该接口。 ConcreteFactory: 具体的工厂类实现了抽象工厂类中定义的工厂方法可有客户端调用返回一个具体产品类的实例。 1.1 工厂方法模式实现上述需求 public abstract class Module {private double width;private double height;private String name;public double getWidth() {return width;}public void setWidth(double width) {this.width width;}public double getHeight() {return height;}public void setHeight(double height) {this.height height;}public String getName() {return name;}public void setName(String name) {this.name name;}Overridepublic String toString() {return name { width width , height height };} }public class ButtonModule extends Module{}public class TextModule extends Module{ }/*** 在开发组件的时候比如button、text等需要对这些组件做比较多的初始化工作比如初始化长度等。*/ public interface Factory {Module create();}public class ButtonFactory implements Factory{Overridepublic Module create() {ButtonModule module new ButtonModule();module.setHeight(100.0);module.setName(button);// 其他初始化工作return module;} }public class TextFactory implements Factory{Overridepublic Module create() {TextModule textModule new TextModule();textModule.setName(text);textModule.setHeight(123);//其他初始化操作return textModule;} } 为了让系统具有更好的灵活性和可扩展性客户端创建工厂对象时不再通过new关键字而是通过存储在配置文件里的具体工厂类的类名使用反射机制来创建具体的工厂。优化如下 ?xml version1.0 encodingUTF-8? configclassNamecom.huangmingfu.factory_method.ButtonFactory/className /configpublic class FactoryMethodXmlUtil {public static Object getBean() {try {DocumentBuilderFactory dFactory DocumentBuilderFactory.newInstance();DocumentBuilder documentBuilder dFactory.newDocumentBuilder();Document document documentBuilder.parse(FactoryMethodXmlUtil.class.getClassLoader().getResourceAsStream(factory_method/concrete-factory.xml));NodeList nodeList document.getElementsByTagName(className);Node node nodeList.item(0).getFirstChild();String className node.getNodeValue();Class? aClass Class.forName(className);return aClass.newInstance();} catch (Exception e) {e.printStackTrace();return null;}}}public class Client {public static void main(String[] args) {Factory factory;factory (Factory) FactoryMethodXmlUtil.getBean();assert factory ! null;System.out.println(factory.getClass());Module module factory.create();System.out.println(module);}}2 优缺点 2.1 优点 1向客户隐藏了产品类实例化细节用户只需关心所需产品对应的工厂无须关心创建细节甚至无需知道具体产品类的类名 2扩展性好符合开闭原则。 2.2 缺点 1添加新的产品时需要编写新的具体产品类及对应的具体工厂类使得系统中类的个数成对增加增加了系统复杂度及开销。 3 适用场景 客户不知道所需要的对象的类只知道所对应的工厂。对象创建时需初始化操作多。
http://www.hkea.cn/news/14312334/

相关文章:

  • 找人做网站注意什么wordpress隐私设置
  • 站酷网logo网站项目设计具体方案
  • 免费学编程的网站有哪些做网站卖广告位赚钱
  • 晋州网站建设中国建设招标网是权威网站吗
  • 中国最权威的网站排名济南简单网站制作排名公司
  • 网站设计运行费用优酷专门给马天宇做的网站
  • 江苏城乡住房建设厅网站建设网站是什么样的
  • 常平东莞网站建设网页制作模板如何制作
  • 个人网站html模板下载网站开发设计的步骤
  • 网站建设平台开发苏州营销型网站建设
  • 如何制作一个手机网站源码搭wordpress用什么
  • 怎么建设属于自己的网站营销型网站建设原则
  • 长沙网站优化技巧网站开发 安全
  • 一个ip地址上可以做几个网站吗德州网站建设公司
  • 广告设计软件coreldraw教程石家庄网站seo
  • 站长收录平台中企动力设计的网站
  • 开网店3个月来亏了10万网站排名优化公司哪家好
  • 网站如何注册微信公众平台 类型司法公开网站建设情况汇报
  • 东莞网络推广策略googleseo專業
  • 上海网站建设代码自己做软件的应用
  • 自助建站系统怎么用北京电力交易中心公示
  • 优秀手机网站版式使用wordpress做图站
  • 一般网站用什么技术做的微信平台可以做微网站吗
  • 有什么做酒和水果茶教程的网站大连做网站电话
  • 临沂网站建设公司招聘做网站用什么团建
  • 高端集团网站建设公司wordpress目录页去掉
  • 网站开发获取报价wordpress应用主题出错
  • 兰州网站建设ulezhi餐饮品牌全案策划
  • wordpress 导入模板郑州seo公司哪家好
  • 辽阳企业网站建设费用公众号开发用什么语言