设计模式抽象工厂模式之模拟出租出售
Posted lisin-lee-cooper
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式抽象工厂模式之模拟出租出售相关的知识,希望对你有一定的参考价值。
一.概念
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
二.场景
北上广深不相信眼泪,北上广深房价也高不可攀,在这些城市上班的人,租房和买房都是十分关键的,租的好走路上班,租不好1小时以上通勤也是分分钟的事,那买房的话就更不在话下了,这里为了业务或者产品划分,往往会把出租和出售对应两个产品簇,抽象工厂正是为了解决此类问题,而工厂模式是更多是为了解决单一产品的问题,此案例配合使用代理模式,当同一产品簇里新增对象时,使得工厂在创建对象时无需再新增if/else代码.
三类图及代码实现
1.类图
2.代码实现
2.1出租租入接口
public interface Intermediary {
default void lease(){
}
default void rent(){
}
}
2.2出租实现
public class LeaseServiceImpl implements Intermediary {
@Override
public void lease() {
System.out.println("出租");
}
}
2.3租入实现
public class RentServiceImpl implements Intermediary {
@Override
public void rent() {
System.out.println("租入");
}
}
2.4 出售购买交易接口
public interface Customer {
void deal();
}
2.5 买家
public class Buyer implements Customer{
@Override
public void deal() {
System.out.println("购买");
}
}
2.6 卖家
public class Seller implements Customer {
@Override
public void deal() {
System.out.println("售出");
}
}
2.7执行代理方法工具类
public class ProxyUtil {
public static <T> T getProxy(Class clazz) {
return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
new Class[]{clazz.getInterfaces()[0]},
(proxy, method, args) -> clazz.getMethod(method.getName())
.invoke(clazz.newInstance(), args));
}
}
四.测试验证
1.测试类
public class TestMain {
public static void main(String[] args) {
IntermediaryFactory intermediaryFactory = new IntermediaryFactory();
Intermediary leaseService = intermediaryFactory.getIntermediary(LeaseServiceImpl.class);
leaseService.lease();
Intermediary sellService = intermediaryFactory.getIntermediary(RentServiceImpl.class);
sellService.rent();
CustomerFactory customerFactory = new CustomerFactory();
Customer buyer = customerFactory.getCustomer(Buyer.class);
buyer.deal();
Customer seller = customerFactory.getCustomer(Seller.class);
seller.deal();
}
}
分别模拟出租房源和出售房源场景
2.测试结果
出租
租入
购买
售出
Process finished with exit code 0
以上是关于设计模式抽象工厂模式之模拟出租出售的主要内容,如果未能解决你的问题,请参考以下文章