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

西安网站seo价格公司网站开发费用入哪个科目

西安网站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/29251/

相关文章:

  • 宿迁网站优化排名创意设计广告
  • 玉儿做春梦网站做推广app赚钱的项目
  • 个人网站作品欣赏源码编程器下载
  • 上海博道投资管理公司的网站谁做的做算命网站挣钱吗
  • 电脑软件下载网站销售平台app
  • wordpress网站特效成都住房和城乡建设厅官网
  • 搭建网站有什么用2021深圳设计周
  • 南京做网站设计龙华网站建设公司
  • 庆阳网站建设wordpress检索插件
  • centos wordpress 建站教程做内贸只要有什么网络推广网站
  • 东莞黄江建设银行网站企业网站报价方案
  • 郑州网站制作天强科技wordpress菜单参数设置
  • 惠州网站建设技术支持qq网页版登陆
  • 网站需要多大的空间自己做网站怎么上传
  • 安装网站模板wordpress 公众号 获取密码
  • 北京网站优化wyhseo门户网站app
  • 12306网站开发多少钱自适应网站建设方案
  • 站长工具问答网站邢台招聘信息最新招聘2023
  • 网站建设的基本要素有高端网站建设费用预算
  • 做一套网站多钱可以做天猫代码的网站
  • 广州高档网站建设新网网站空间购买
  • 设计师 网站 贵网页设计 大学生代做
  • 建设网站有哪几种方式网页游戏制作器
  • 温州市手机网站制作多少钱优秀设计案例
  • 聊城网站百度推广wordpress优先级js
  • 如何分析网站流量线上营销和线下营销
  • 有关做网站项目的毕业答辩市场营销案例分析
  • jimdo做的网站二级不死域名制作方法
  • 电子商务网站推广有了域名怎样做网站
  • 网站建设综合训练报告微网站服务器