Design Pattern - Abstract Factory Demo

Abstract Factory


//Abstract Factory
public abstract class CreditCardFactory {

    public static CreditCardFactory getCreditCardFactory(int creditScore) {
    
        if(creditScore > 650) {
            return new AmexFactory();
        }
        else {
            return new VisaFactory();
        }
    }
    
    public abstract CreditCard getCreditCard(CardType cardType);
        
    public abstract Validator getValidator(CardType cardType);
}

Concreate Facotry - Amex

public class AmexFactory extends CreditCardFactory {

    @Override
    public CreditCard getCreditCard(CardType cardType) {
        
        switch (cardType) {
            case GOLD:
                return new AmexGoldCreditCard();
    
            case PLATINUM:
                return new AmexPlatinumCreditCard();    
                
            default:
                break;
        }
        
        return null;
    }

    @Override
    public Validator getValidator(CardType cardType) {
        
        switch (cardType) {
            case GOLD:
                
                return new AmexGoldValidator();
    
            case PLATINUM:
                
                return new AmexPlatinumValidator(); 
        
        }
        
        return null;
    }
}

Concreate Amex Credit Card

//AbstractProduct
public abstract class CreditCard {

    protected int cardNumberLength;
    
    protected int cscNumber;

    public int getCardNumberLength() {
        return cardNumberLength;
    }

    public void setCardNumberLength(int cardNumberLength) {
        this.cardNumberLength = cardNumberLength;
    }

    public int getCscNumber() {
        return cscNumber;
    }

    public void setCscNumber(int cscNumber) {
        this.cscNumber = cscNumber;
    }
    
}
public class AmexPlatinumCreditCard extends CreditCard {

}
public class AmexGoldCreditCard extends CreditCard {

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容