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

公司想建个网站泉州网页网站制作

公司想建个网站,泉州网页网站制作,郑州汉狮做网站网络公司,wordpress目录功能如有错误或有补充,以及任何的改进意见,请在评论区留下您的高见 工厂模式 工厂模式是一种创建型设计模式。在工厂模式中,类的实例化过程通常是通过一个专门的工厂类来完成的,而不是直接在客户端代码中进行的。这样可以提供更好的…

如有错误或有补充,以及任何的改进意见,请在评论区留下您的高见

工厂模式

工厂模式是一种创建型设计模式。在工厂模式中,类的实例化过程通常是通过一个专门的工厂类来完成的,而不是直接在客户端代码中进行的。这样可以提供更好的封装,使得客户端代码与具体产品的实现解耦,增加代码的灵活性和可维护性。

优点

封装性:客户端代码不再需要知道所创建对象的详细信息,只需要与工厂接口进行交互即可。

灵活性:工厂模式使得系统更加灵活,可以在不修改客户端代码的情况下更换或添加新产品。

可扩展性:通过使用工厂模式,当需要添加新产品时,只需要扩展工厂类,而不需要修改客户端代码。

基本结构

抽象产品(Abstract Product):这是要创建的对象的抽象接口。

具体产品(Concrete Product):实现了抽象产品接口的具体类。

具体工厂(Concrete Factory):负责创建具体产品对象。

应用场景

当一个类不知道它所必须创建对象的类时:例如,你可能需要根据输入参数的不同来创建不同的对象。

当一个类希望其子类决定它所创建的对象时:例如,你希望提供一种方法让子类来自定义对象的创建过程。

当一个类希望通过子类来指定它所创建的对象时:在这种情况下,你可以将“创建对象”的职责委托给子类,而不是直接在父类中完成。

示例

假设我们有一个场景,其中需要创建不同的小动物,包括小狗,小猫。此时就可以使用工厂模式。

Animal.java

public interface Animal {void eat();
}

AnimalFactroy.java

public class AnimalFactory {public Animal getAnimal(String name) {if  (name == null){return null;}// 根据不同的输入返回不同对象if ("dog".equals(name)) {return new Dog();} else if ("cat".equals(name)) {return new Cat();}return null;}
}

Cat.java

public class Cat implements Animal{@Overridepublic void eat() {System.out.println("吃鱼");   }
}

Dog.java

public class Dog implements Animal{@Overridepublic void eat() {System.out.println("吃骨头");}
}

Demo.java

public class Demo {public static void main(String[] args) {AnimalFactory animalFactory = new AnimalFactory();Cat cat = (Cat) animalFactory.getAnimal("cat");cat.eat();Animal dog = animalFactory.getAnimal("dog");dog.eat();}
}

运行Demo.java输出如下

吃鱼
吃骨头

抽象工厂模式

优点

封装性:客户端代码不再需要知道所创建对象的详细信息,只需要与抽象工厂接口进行交互即可。

灵活性:通过使用抽象工厂模式,可以在不修改客户端代码的情况下更换或添加新产品族。

多态性:客户端代码可以使用同一个接口来创建不同类型的产品对象,增强了代码的复用性。

基本结构

抽象产品(Abstract Product):这是要创建的对象的抽象接口。

具体产品(Concrete Product):实现了抽象产品接口的具体类。

抽象工厂(Abstract Factory):创建产品的工厂的抽象接口。

具体工厂(Concrete Factory):实现了抽象工厂的类,负责创建具体产品对象。

应用场景

当一个系统中有多个产品族,并且希望客户端代码使用同一个接口来创建不同产品族的对象时:使用抽象工厂模式可以将不同产品族的创建逻辑封装在各自的具体工厂中,使得客户端代码与具体产品实现解耦。

当希望在不修改客户端代码的情况下更换或添加新产品族时:通过扩展具体工厂类来添加新产品族,而不需要修改客户端代码。

当希望对一个系统中的多个产品族进行独立配置时:使用抽象工厂模式可以将配置逻辑集中到具体工厂中,使得客户端代码更加简洁。

示例

我们有不同的类Object需要生成,于是我们把工厂也抽象出来,为每一个类设置不同的工厂,再让这些工厂去继承同一个接口。

Total.java

public class Total {public static void main(String[] args) {com.hacoj.abstract_factory_pattern.PatternFactory patternFactory = (com.hacoj.abstract_factory_pattern.PatternFactory) com.hacoj.abstract_factory_pattern.FactoryProducer.getFactory("Pattern");com.hacoj.abstract_factory_pattern.ColorFactory colorFactory = (com.hacoj.abstract_factory_pattern.ColorFactory) com.hacoj.abstract_factory_pattern.FactoryProducer.getFactory("Color");com.hacoj.abstract_factory_pattern.Pattern circle = patternFactory.getPattern("circle");com.hacoj.abstract_factory_pattern.Pattern rectangle = patternFactory.getPattern("rectangle");com.hacoj.abstract_factory_pattern.Color red = colorFactory.getColor("red");com.hacoj.abstract_factory_pattern.Color blue = colorFactory.getColor("blue");circle.show();rectangle.show();red.show();blue.show();}
}class FactoryProducer {public static com.hacoj.abstract_factory_pattern.AbstractFactory getFactory(String name) {if (name==null) {return null;}if ("Pattern".equals(name)) {return new PatternFactory();} else if ("Color".equals(name)) {return new com.hacoj.abstract_factory_pattern.ColorFactory();} else {System.out.println("没有对应的厂子");return null;}}
}interface AbstractFactory {}interface Pattern {void show();
}interface Color {void show();
}class Circle implements Pattern {@Overridepublic void show() {System.out.println("这是圆形");}
}class Blue implements Color {@Overridepublic void show() {System.out.println("这是蓝色");}
}class Rectangle implements com.hacoj.abstract_factory_pattern.Pattern {@Overridepublic void show() {System.out.println("这是方形");}
}class Red implements com.hacoj.abstract_factory_pattern.Color {@Overridepublic void show() {System.out.println("这是红色");}
}class ColorFactory implements com.hacoj.abstract_factory_pattern.AbstractFactory {public com.hacoj.abstract_factory_pattern.Color getColor(String name) {if (name==null){return null;}if ("red".equals(name)){return new Red();} else if ("blue".equals(name)) {return new com.hacoj.abstract_factory_pattern.Blue();} else {System.out.println("Invalid color");return null;}}
}class PatternFactory implements com.hacoj.abstract_factory_pattern.AbstractFactory {public com.hacoj.abstract_factory_pattern.Pattern getPattern(String name) {if (name == null) {return null;}if ("rectangle".equals(name)) {return new Rectangle();} else if ("circle".equals(name)) {return new com.hacoj.abstract_factory_pattern.Circle();} else {System.out.println("Invalid pattern");return null;}}
}

区别

普通工厂模式仅用于创建单个对象,而抽象工厂模式可以创建一类对象。抽象工厂模式更灵活,可维护性和可扩展性更强,适用于多个产品等级结构。

http://www.yayakq.cn/news/273562/

相关文章:

  • 贵阳制作网站vs网站开发入门
  • 杭州建设网站官网国内 wordpress主机
  • 校园网站开发的目的域名免费查询
  • 天河网站建设wordpress提示没有权限
  • 如何做论坛网站成都附近的旅游景点大全
  • 分辨率大于1920的网站怎么做百度地图手机网站代码
  • 环保设计院的网站建设找别人做淘客网站他能改pid吗
  • 无锡做网站哪家好丰台建设企业网站
  • 域名和网站一样吗江阴 网站开发
  • 淘宝客都在什么平台建网站百度网站怎么建设
  • 青岛网站互联网公司淘宝网页版手机登录
  • 个人网站 虚拟主机价格阳泉 网站建设合作
  • 长沙品牌logo设计公司seo推广效果怎么样
  • 通辽北京网站建设如何发布网页
  • 果洛营销网站建设哪家好长沙建设教育网
  • 做美食教程的网站有哪些建设银行网站一直打不开
  • 外包网站自己维护个人申请公众号注册
  • 企业网站制作 优帮云英文网站设计制作
  • 长沙点梦网站建设河北省建设资格执业中心网站
  • 福步外贸官网济南seo的排名优化
  • iis7配置asp网站国家企业营业执照查询
  • 广州万安建设监理有限公司网站wordpress nginx php.ini
  • 做3d打印网站枣强网站建设培训学校
  • 网站建设地基本流程太原提高网站排名
  • 青岛网站建设青岛新思维网站按钮样式
  • 公司网站的留言板怎么做企业网站制作比较好的
  • 关于做外汇现货的网站网站目录改版如何301跳转呀
  • 网站导航栏按钮网站建设与行政管理
  • 做班级网站的素材网站制作模版
  • 免费申请二级网站源码网站建设的费用是多少钱