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

香港的贸易公司可以做网站吗小型项目外包网站

香港的贸易公司可以做网站吗,小型项目外包网站,武汉刚刚突然宣布2022疫情,株洲有实力关键词优化服务目录 工厂方法模式 简介 优缺点 结构 使用场景 实现 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.zhongyajixie.com/news/51024.html

相关文章:

  • 做网站用的什么软件百度帐号管家
  • 成都商城网站开发宁波seo关键词费用
  • 新手自学做网站多久百度搜索推广和信息流推广
  • 宁波网站优化体验百度推广深圳分公司
  • 滨州网站建设腾度淘宝关键词排名查询工具
  • 为什么做彩票网站会被提示危险郑州网站推广
  • 网站怎么维护中文搜索引擎排名
  • 中国建设教育协会培训报名网站谷歌推广费用
  • 网站的建设与维护就业方向广东网站营销seo费用
  • 招聘网站怎么做线下活动上海谷歌优化
  • idc网站源码品牌seo是什么意思
  • 当前网站开发什么语言网络推广营销网
  • 和布克赛尔网站建设友情链接交换软件
  • 该怎么给做网站的提页面需求百中搜
  • 网站开发的程序平台百度公司电话是多少
  • 做网络调查的网站赚钱关键的近义词
  • 网站建设 国外做推广哪个平台效果好
  • 北京做网站推广北京做网站的公司排行
  • 济南营销网站制作公司网络营销题库案例题
  • 怎么做返利网之类的网站网站推广优化排名seo
  • 苏州城乡住房建设局网站首页
  • 如何做一个营销型网站线上推广怎么做
  • 国学大师网站是哪里做的产品软文范例软文
  • 广东网站建设公司电话营销咨询公司排名
  • 搭建一个个人网站百度品牌广告多少钱一个月
  • 银川网站建设引流app推广软件
  • 广州家具网站建设惠州抖音seo策划
  • wordpress个人网站备案管理seo计费怎么刷关键词的
  • 庆阳市人大常委会网站建设考研培训机构排名
  • 郑州云帆网站设计网页模板免费下载