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

成都网站建设维护盐城seo培训

成都网站建设维护,盐城seo培训,拖拽做网站,商城网站开发多少钱目录 工厂方法模式 简介 优缺点 结构 使用场景 实现 1.抽象产品 2.具体产品 3.抽象工厂 4.具体工厂 5.调用 总结 抽象工厂模式 简介 结构 实现 区别 工厂方法模式 简介 提供一个用于创建对象的接口(工厂接口),让其实现类(工厂实现类)决定实例化哪…

目录

工厂方法模式

简介

优缺点

结构

使用场景

实现

1.抽象产品

2.具体产品

3.抽象工厂

4.具体工厂

5.调用

总结

抽象工厂模式

简介

结构

实现

区别


工厂方法模式

简介

提供一个用于创建对象的接口(工厂接口),让其实现类(工厂实现类)决定实例化哪一个类(产品类),并且由该实现类创建对应类的实例

被创建的对象称为“产品”,把创建产品的对象称为“工厂”;

工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则

优缺点

优点:

        1.用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程

        2.灵活性增强,对于新产品的创建,只需多写一个相应的工厂类

        3.典型的解耦框架

缺点:

        1.类的个数容易过多,增加复杂度

        2.增加了系统的抽象性和理解难度

        3.抽象产品只能生产一种产品,此弊端可使用抽象工厂模式解决

结构

角色:

        1.抽象工厂:提供了创建产品的接口,调用者通过访问具体工厂的工厂方法来创建产品

        2.具体工厂:实现抽象工厂里面的抽象方法,完成具体产品的创建

        3.抽象产品:定义了产品的规范,描述了产品的主要特性和功能

        4.具体产品:实现了抽象产品定义的接口,由具体工厂来创建,它通具体工厂之间对应

结构图:

使用场景

1.客户只知道创建产品的工厂名,而不知道具体的产品名。如 TCL 电视工厂、海信电视工厂等

2.创建对象的任务由多个具体子工厂中的某一个完成,而抽象工厂只提供创建产品的接口

3.客户不关心创建产品的细节,只关心产品的品牌

实现

1.抽象产品

interface Product {public void show();
}

2.具体产品

//具体产品1:实现抽象产品中的抽象方法
class ConcreteProduct1 implements Product {public void show() {System.out.println("具体产品1显示...");}
}
//具体产品2:实现抽象产品中的抽象方法
class ConcreteProduct2 implements Product {public void show() {System.out.println("具体产品2显示...");}
}

3.抽象工厂

//抽象工厂:提供了厂品的生成方法
interface AbstractFactory {public Product newProduct();
}

4.具体工厂

//具体工厂1:实现了厂品的生成方法
class ConcreteFactory1 implements AbstractFactory {public Product newProduct() {System.out.println("具体工厂1生成-->具体产品1...");return new ConcreteProduct1();}
}
//具体工厂2:实现了厂品的生成方法
class ConcreteFactory2 implements AbstractFactory {public Product newProduct() {System.out.println("具体工厂2生成-->具体产品2...");return new ConcreteProduct2();}
}

5.调用

public static void main(String[] args) {try {Product a;AbstractFactory af;af = (AbstractFactory) ReadXML1.getObject();a = af.newProduct();a.show();} catch (Exception e) {System.out.println(e.getMessage());}}

总结

        工厂方法模式是简单工厂模式的进一步抽象和推广,由于使用了面向对象的多态性,工厂方法模式保持了简单工厂的优点,并且克服了缺点。

抽象工厂模式

简介

提供了一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类

结构

角色:

        抽象工厂:声明了一组用于创建一组产品的方法,每个方法对应一组产品

        具体工厂:实现了在抽象工厂中声明的创建产品的方法,生成一组具体产品,这些产品构成了一个产品组,每一个产品都位于某个产品等级结构中

        抽象产品:为每种产品声明接口,在抽象产品中声明了产品所具有的业务方法

        具体产品:定义具体工厂生产的具体产品对象,实现抽象产品接口中声明的业务方法

结构图:

实现

1.为形状创建一个接口


public interface Shape {void draw();
}

2.创建实现接口的实体类


public class Rectangle implements Shape {@Overridepublic void draw() {System.out.println("Inside Rectangle::draw() method.");}
}public class Square implements Shape {@Overridepublic void draw() {System.out.println("Inside Square::draw() method.");}
}public class Circle implements Shape {@Overridepublic void draw() {System.out.println("Inside Circle::draw() method.");}
}

3.为颜色创建一个接口


public interface Color {void fill();
}

4.创建实现接口的实体类


public class Red implements Color {@Overridepublic void fill() {System.out.println("Inside Red::fill() method.");}
}public class Green implements Color {@Overridepublic void fill() {System.out.println("Inside Green::fill() method.");}
}public class Blue implements Color {@Overridepublic void fill() {System.out.println("Inside Blue::fill() method.");}
}

5.为 Color 和 Shape 对象创建抽象类来获取工厂


public abstract class AbstractFactory {public abstract Color getColor(String color);public abstract Shape getShape(String shape) ;
}

6.创建扩展了 AbstractFactory 的工厂类,基于给定的信息生成实体类的对象


public class ShapeFactory extends AbstractFactory {@Overridepublic Shape getShape(String shapeType){if(shapeType == null){return null;}        if(shapeType.equalsIgnoreCase("CIRCLE")){return new Circle();} else if(shapeType.equalsIgnoreCase("RECTANGLE")){return new Rectangle();} else if(shapeType.equalsIgnoreCase("SQUARE")){return new Square();}return null;}@Overridepublic Color getColor(String color) {return null;}
}public class ColorFactory extends AbstractFactory {@Overridepublic Shape getShape(String shapeType){return null;}@Overridepublic Color getColor(String color) {if(color == null){return null;}        if(color.equalsIgnoreCase("RED")){return new Red();} else if(color.equalsIgnoreCase("GREEN")){return new Green();} else if(color.equalsIgnoreCase("BLUE")){return new Blue();}return null;}
}

7.创建一个工厂创造器/生成器类,通过传递形状或颜色信息来获取工厂


public class FactoryProducer {public static AbstractFactory getFactory(String choice){if(choice.equalsIgnoreCase("SHAPE")){return new ShapeFactory();} else if(choice.equalsIgnoreCase("COLOR")){return new ColorFactory();}return null;}
}

8.使用 FactoryProducer 来获取 AbstractFactory,通过传递类型信息来获取实体类的对象


public class AbstractFactoryPatternDemo {public static void main(String[] args) {//获取形状工厂AbstractFactory shapeFactory = FactoryProducer.getFactory("SHAPE");//获取形状为 Circle 的对象Shape shape1 = shapeFactory.getShape("CIRCLE");//调用 Circle 的 draw 方法shape1.draw();//获取形状为 Rectangle 的对象Shape shape2 = shapeFactory.getShape("RECTANGLE");//调用 Rectangle 的 draw 方法shape2.draw();//获取形状为 Square 的对象Shape shape3 = shapeFactory.getShape("SQUARE");//调用 Square 的 draw 方法shape3.draw();//获取颜色工厂AbstractFactory colorFactory = FactoryProducer.getFactory("COLOR");//获取颜色为 Red 的对象Color color1 = colorFactory.getColor("RED");//调用 Red 的 fill 方法color1.fill();//获取颜色为 Green 的对象Color color2 = colorFactory.getColor("Green");//调用 Green 的 fill 方法color2.fill();//获取颜色为 Blue 的对象Color color3 = colorFactory.getColor("BLUE");//调用 Blue 的 fill 方法color3.fill();}
}

区别

1.工厂方法模式只有一个抽象产品类,抽象工厂模式有多个

2.工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个

3.工厂方法模式: 一个抽象产品类,可以派生出多个具体产品类。 一个抽象工厂类,可以派生出多个具体工厂类。 每个具体工厂类只能创建一个具体产品类的实例

http://www.hrbkazy.com/news/41310.html

相关文章:

  • .tel域名不可以做网站域名吗长沙 建站优化
  • 谁知道美国做的色情网站app推广注册赚钱
  • 做代理记账网站2023百度秒收录技术
  • 车身做网站宣传图电商网站建设价格
  • 手机做wifi中继上外国网站东莞建设企业网站
  • wordpress专题功能福州seo优化
  • 寺院网站模板如何优化企业网站
  • 做网站用那个浏览器百度最新秒收录方法2023
  • 网站建设 财务归类爱链网中可以进行链接买卖
  • 做网站公司300元钱百度seo怎么查排名
  • 吴江公司网站建设电话自动交换友情链接
  • 咸鱼网站交易付款怎么做如何进行搜索引擎优化
  • 中国最近新闻大事件网站优化检测工具
  • 做网站一个程序员够吗近期时政热点新闻20条
  • 襄阳做公司网站的软件公司一键优化大师
  • 网站建设有免费的空间吗搜索引擎优化怎么做的
  • 重庆市建立网站的网络公司网站域名解析
  • 做国外wordpress賺钱seo优化是啥
  • 网站商城首页怎么做吸引人seo排名优化技术
  • 合肥企业模板建站站外引流推广渠道
  • 国家外汇局网站做预付报告无代码免费web开发平台
  • 济南网站建设找大标济南计算机培训机构哪个最好
  • 网站上的动效是用ae做的今日刚刚发生的军事新闻
  • 应用之星制作app软件官网深圳知名网络优化公司
  • 企业名录采集器济南seo网络优化公司
  • dedecms小说网站模板下载市场营销四大基本策略
  • 福州seo公司网站搜索引擎优化的流程是什么
  • 温州市网站制作哪家便宜短视频拍摄剪辑培训班
  • 找人做网站需要什么软件搜索关键词排行榜
  • 南阳 直销网站开发3步打造seo推广方案