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

青县网站建设价格广州市企业网站建设

青县网站建设价格,广州市企业网站建设,网站制作的公司哪个好,网站首页面设计工厂模式和抽象工厂模式是创建型设计模式中的两种,主要用于对象的创建,并且通过将对象的创建过程封装起来,来实现代码的解耦和灵活性。下面通过具体实例来说明这两种模式的用法及其在解耦中的作用。 工厂模式(Factory Method Pat…

工厂模式和抽象工厂模式是创建型设计模式中的两种,主要用于对象的创建,并且通过将对象的创建过程封装起来,来实现代码的解耦和灵活性。下面通过具体实例来说明这两种模式的用法及其在解耦中的作用。

工厂模式(Factory Method Pattern)

工厂模式通过定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

实例说明

假设我们有一个交通工具接口 Vehicle 以及具体实现类 CarBike。我们通过工厂模式来创建这些交通工具对象。

接口和实现类

// Vehicle.java
public interface Vehicle {void drive();
}// Car.java
public class Car implements Vehicle {@Overridepublic void drive() {System.out.println("Driving a car.");}
}// Bike.java
public class Bike implements Vehicle {@Overridepublic void drive() {System.out.println("Riding a bike.");}

工厂类

// VehicleFactory.java
public abstract class VehicleFactory {public abstract Vehicle createVehicle();
}// CarFactory.java
public class CarFactory extends VehicleFactory {@Overridepublic Vehicle createVehicle() {return new Car();}
}// BikeFactory.java
public class BikeFactory extends VehicleFactory {@Overridepublic Vehicle createVehicle() {return new Bike();}

使用工厂模式

public class Main {public static void main(String[] args) {VehicleFactory carFactory = new CarFactory();Vehicle car = carFactory.createVehicle();car.drive(); // 输出: Driving a car.VehicleFactory bikeFactory = new BikeFactory();Vehicle bike = bikeFactory.createVehicle();bike.drive(); // 输出: Riding a bike.}
}
解耦作用

通过工厂模式,Main 类不需要知道具体的交通工具类,只需要知道工厂类和接口 Vehicle。这使得代码更加灵活,增加了新类型的交通工具时不需要修改现有代码。

抽象工厂模式(Abstract Factory Pattern)

抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

实例说明

假设我们有一个家具工厂,可以创建椅子和沙发。我们通过抽象工厂模式来实现。

接口和实现类

// Chair.java
public interface Chair {void sitOn();
}// Sofa.java
public interface Sofa {void lieOn();
}// VictorianChair.java
public class VictorianChair implements Chair {@Overridepublic void sitOn() {System.out.println("Sitting on a Victorian chair.");}
}// ModernChair.java
public class ModernChair implements Chair {@Overridepublic void sitOn() {System.out.println("Sitting on a modern chair.");}
}// VictorianSofa.java
public class VictorianSofa implements Sofa {@Overridepublic void lieOn() {System.out.println("Lying on a Victorian sofa.");}
}// ModernSofa.java
public class ModernSofa implements Sofa {@Overridepublic void lieOn() {System.out.println("Lying on a modern sofa.");}

抽象工厂类和具体工厂类

// FurnitureFactory.java
public interface FurnitureFactory {Chair createChair();Sofa createSofa();
}// VictorianFurnitureFactory.java
public class VictorianFurnitureFactory implements FurnitureFactory {@Overridepublic Chair createChair() {return new VictorianChair();}@Overridepublic Sofa createSofa() {return new VictorianSofa();}
}// ModernFurnitureFactory.java
public class ModernFurnitureFactory implements FurnitureFactory {@Overridepublic Chair createChair() {return new ModernChair();}@Overridepublic Sofa createSofa() {return new ModernSofa();}
}

使用抽象工厂模式

public class Main {public static void main(String[] args) {FurnitureFactory victorianFactory = new VictorianFurnitureFactory();Chair victorianChair = victorianFactory.createChair();Sofa victorianSofa = victorianFactory.createSofa();victorianChair.sitOn(); // 输出: Sitting on a Victorian chair.victorianSofa.lieOn();  // 输出: Lying on a Victorian sofa.FurnitureFactory modernFactory = new ModernFurnitureFactory();Chair modernChair = modernFactory.createChair();Sofa modernSofa = modernFactory.createSofa();modernChair.sitOn(); // 输出: Sitting on a modern chair.modernSofa.lieOn();  // 输出: Lying on a modern sofa.}
}
解耦作用

抽象工厂模式通过将具体工厂类与产品对象的创建过程分离,使得客户端代码仅依赖于工厂接口和产品接口。这样,增加新的家具风格时,只需添加新的具体工厂类和产品类,不需要修改现有代码。这种方式大大提高了系统的扩展性和可维护性。

总结

  1. 工厂模式通过定义一个创建对象的接口,使得具体类的实例化过程延迟到子类,从而实现了创建对象的灵活性和代码的解耦。
  2. 抽象工厂模式则进一步扩展,通过提供一个创建一系列相关或相互依赖对象的接口,使得产品族的创建过程独立于客户端代码,极大地提高了系统的可扩展性和可维护性。

两种模式都通过将对象的创建过程封装起来,实现了代码的解耦,使得系统更加灵活、易于扩展和维护。

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

相关文章:

  • 湘潭网站建设 排名磐石网络网站建设一般报价
  • 广告推广平台网站南京网站设计费用
  • 网站动态背景欣赏网店营销策划书
  • 成为网站建设人员措施上海十大猎头公司排名
  • 徐州网站二次开发建设公司网站需要注意哪些
  • 衡水企业网站建设公司asp商品网站源码
  • 网站开发技术入股协议长沙精品网站制作
  • 合肥网站建设网页设计手机网站跟pc网站有什么不同
  • php网站开发专员招聘山西集团网站建设
  • 这样做网站推广西安自助网站建设系统
  • 有没有专业做特产的网站西安装修公司哪家口碑最好
  • 网站建设相关的博客有哪些宽屏大气网站模板
  • 网站建设主要用什么软件修改wordpress logo
  • 衡水提供网站制作公司哪家好专业的vi设计公司
  • 如何做网站同步别人的商城网站域名地址
  • 网站引导动画怎么做便捷网站建设报价
  • 博达网站建设流程wordpress引入php文件
  • 如何对网站做优化wordpress视频教
  • 小程序开发用什么软件seo手机端排名软件
  • 摄影网站建设的目的装置艺术那个网站做的好
  • 貴阳建设银行网站信创网站建设
  • 做网站广告网页淘宝客建立网站推广怎么做
  • 济宁做网站的公司成都建立网站
  • 大兴快速网站建设公司做网站建站
  • 网站上的图片多大合适作业做哪些类型的网站
  • html5制作网站模板什么是微信wordpress
  • 聊城做网站的公司价格wordpress撰写邮箱
  • 美食网站建设设计方案做网站论坛
  • 网站搭建赚钱吗网站建设的安全性
  • 苏州做淘宝网站万网云虚拟主机上传网站