1.单例模式:
特点:就是给其他对象返回的都是同一个由自己创建的实例;
应用:比如在spring中创建的bean实例默认就是单例模式的。比如网站的计数器
实现:饿汉式(线程安全,在类加载的时候已经实例化,调用时速度快)
public void
2.工厂模式:
特点:
应用
3.策略模式:
特点:将每一个方法封装起来,使他们可以相互替换。解决在在编码吗是使用大量if -else问题。
应用:
a.同一个抽象类有多个子类,而又需要ifelse切换子类,冲q币的时候会员是97折,超级会员是92折,那么这就是两种策略
举个比较简单的例子,冲q币的时候会员是97折,超级会员是92折。那么这就是两种策略。下面用代码实现。
1.创建一个计算价格的策略接口
public interface CalPrice(){
//计算价格的方法
DOuble returnPrice(Double QNum);
}
2.创建两个具体的价格计算策略
public class Vip implements CalPrice(){
@Override
Double returnPrice(Double QNum){
return QNum * 0.97;
}
}
public class SVip implements CalPrice(){
@Override
Double returnPrice(Double QNum){
return QNum * 0.92;
}
}
3.创建一个用户角色,带有冲q币的功能
public class Player{
private CalPrice calPrice;
public SetVip(CalPrice calPrice){
this.calPrice = calPrice;
}
public void returnPrice(Double QNum){
calPrice.returnPrice(Double QNum);
}
}
4.使用方法
public static void main(String[] args){
Player player = new Player();
player.setVip(new SVip);
player.returnPrice(12);
}
总结
通过将冲值q币的方法独立出来,实现了用户和身份的松耦合,可以动态的改变角色的身份,同时将冲q币的方法委托给了CalPrice类去执行,角色类不在实现具体的冲q币的方法,这也是一种组合的概念,符合多用组合,少用继承的设计原则(角色的冲q币方式不是继承来的,而是和CalPrice 组合来的)。
作者:骑毛驴追宝马
来源:CSDN
原文:https://blog.csdn.net/u013759988/article/details/82620904
版权声明:本文为博主原创文章,转载请附上博文链接!