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

个人flash网站网站建设主要工作由哪些

个人flash网站,网站建设主要工作由哪些,北京网站建设的公司哪家好,亚马逊排名seo在开发组件的时候比如button、text等,需要对这些组件做比较多的初始化工作,比如初始化长度等。传统的开发方案如下: 图 传统开发方案UML 上面的方案组件创建及组件的其他业务操作耦合在一起,违背了单一职责原则;在客户…

 在开发组件的时候比如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 version="1.0" encoding="UTF-8"?>
<config><className>com.huangmingfu.factory_method.ButtonFactory</className>
</config>public 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 适用场景

  1. 客户不知道所需要的对象的类,只知道所对应的工厂。
  2. 对象创建时,需初始化操作多。
http://www.yayakq.cn/news/492264/

相关文章:

  • 营销网站建设阿凡达北京网站维护浩森宇特
  • 做视频网站想用家庭网络保定cms建站系统
  • h5手机网站模板下载网站 chat now怎么做
  • 网站建设 教学设计游戏钓鱼网站开发
  • 网站代运营佛山商城网站制作
  • 湖州市南浔区建设局网站大连企业网站建设
  • 好的开源网站小程序源码多少钱
  • 如何评估网站中冶交通建设集团网站
  • 怎么搭建网站wordpress4.5.3 中文
  • 惠州建设银行行号查询网站wordpress 评论到微博
  • 国外二手手表网站网页设计师主要是做什么
  • 软件网站开发培训京网站建设首选白龙马
  • 做网站第三方业务网站建设
  • 南京自助建站模板全球速卖通的特点
  • 汕头企业做网站做网站的专业词汇
  • 那些网站可以做推广淮安市建设局网站
  • 深圳市住房和建设局网站-%3e认租申请wordpress开发文档下载
  • 旅游网站的建设内容wordpress图片左对齐
  • 深圳最好的网站开发公司anydrag建站专家网站建设系统
  • 做除尘环保的如何推广自己的网站北京如何优化搜索引擎
  • 福州建设厅官方网站大连在哪个省市
  • 怎么做wood网站教程网络推广员好做吗
  • 南京专业做网站wordpress 判断置顶
  • 淮安企业网站制作wordpress制作交友软件
  • 芙蓉区乡建设局网站网址导航模板wordpress
  • 免费 网站 cms服装网站建设定制
  • 组织部信息化建设官方网站做的比较漂亮的中国网站
  • 石家庄网站开发培训哪个合肥seo好
  • 互动网站制作网站建设服务器费用
  • 网站建设与企业发展群辉做网站服务器配置