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

大学做网站有哪些网推什么平台好用

大学做网站有哪些,网推什么平台好用,易网 网站建设,php网站的推广方式目录 工厂方法模式 简介 优缺点 结构 使用场景 实现 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.shuangfujiaoyu.com/news/49304.html

相关文章:

  • 浦东新区网站设计深圳专业seo
  • 手机百度网站证书过期网站建设技术解决方案
  • 一个旅游网站建设怎么在网上做网络营销
  • 网站建设布局seo工具在线访问
  • 个人是否做众筹网站会员制营销方案
  • 富阳设计网站竞价广告推广
  • 网站集约化建设的通知站长工具流量统计
  • 淄博网站开发找网泰play商店
  • 没有充值入口的传奇手游长沙好的seo外包公司
  • 南京网站公司合肥百度关键词排名
  • ios应用开发语言厦门关键词seo排名网站
  • 做网站最大可以做多少g计算机培训机构排名前十
  • 浙江建设招生网站百度开户渠道
  • 重庆做商城网站建设北京优化核酸检测
  • 最近10条重大新闻东莞seo网站管理
  • linux wordpress ftp揭阳百度seo公司
  • 泰和网站制作竞价交易
  • 会员卡管理系统价格seo流量软件
  • 企业网站首页设计欣赏网站建设优化公司
  • 建一个在线商城网站学网络营销
  • 网站做跳转林云seo博客
  • 郑州专业做微信网站无锡网站服务公司
  • 软件开发项目风险有哪些如何优化关键词的排名
  • 成都seo网站开发西安网站优化公司
  • 微信公众平台怎样开发seo优化是怎么回事呢
  • 企业网站及信息化建设郑州seo网站关键词优化
  • 哈尔滨有哪些做网站的公司个人网站网址
  • 兰陵成都设计公司网站优化公司大家好
  • 专门做音效的网站站长素材网站官网
  • 深圳网站建设亿联时代seo sem什么意思