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

上海网站开发设计培训南宁建站模板大全

上海网站开发设计培训,南宁建站模板大全,wordpress 去除下划线,wordpress登录密码重置工厂模式和抽象工厂模式是创建型设计模式中的两种,主要用于对象的创建,并且通过将对象的创建过程封装起来,来实现代码的解耦和灵活性。下面通过具体实例来说明这两种模式的用法及其在解耦中的作用。 工厂模式(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/21908/

相关文章:

  • 网站用html模拟图片建e网全景图
  • 做做网站需要多少钱注册的空间网站
  • 云南网站设计选哪家互联网创业项目
  • 网站建设三秒原则没有公司做网站
  • 网站空间不足wordpress amp
  • 有没有什么设计排版类网站广西知名网站设计
  • 给公司做网站费用丹东seo推广优化报价
  • 设计师导航网站大全网站都有什么类型的
  • 如何进入网站管理页面自己怎么做一个小程序
  • 设置 wap网站宁阳移动网站制作
  • 普通网站要什么费用找个免费的网站这么难吗
  • 4a景区网站建设标准wordpress网站源码分享
  • 聊城建设银行官方网站资阳市网站seo
  • 十大设计创意网站做外贸哪些网站可以发布产品
  • 网站引导页模板海外cdn
  • 网站开发 重庆优质作文网站
  • 企业门户网站建设与发展趋势做印量调查的网站
  • 泊头网站建设价格注册建设网站的公司网站
  • 企业网站源码进一品资源网仅对wordpress自带主题有效
  • 南海网站智能推广推广软件的渠道有哪些
  • 那些网站做推广logo在线设计生成器标智客
  • 海外酒店网站建设网站建设报销属于什么会计科目
  • 十堰网站建设联系电话汕尾手机网站设计
  • 长春网站建设致电吉网传媒优太原网页设计与制作
  • 南京营销型网站制作万网wordpress
  • 织梦网站评论后"提示验证码错误请点击验证码图片更新验证码南宁市学生网页设计
  • 张家港保税区规划建设局网站wordpress js合并
  • 中国有兼职网站开发网站吗江西省建设厅教育网站
  • 广东建设教育协会网站首页wordpress 根据id获取分类名称
  • 百度站长网站提交搜狗提交入口网址