面向接口编程(简单工厂模式)和单列设计模式


1.简单工厂模式。假如让computer类组合一个printer对象,如果有一天系统需要重构,需要使用Butterpriner来代替printer,这就需要打开computer类源代码进行修改。这样导致很不方便。为了避免这个问题,工厂模式建议让computer类组合一个output类型对象,将computer类与printer类完全分离。
代码举例:public class Computer{
private Output out;
public Computer(Output out){
this.out=out;
}
//定义一个模拟获取字符串输入的方法
public void keyIn(String msg){
out.getData(msg);
}
public void print(){
out.out;
}
}


public class OutputFactory{
public Output getOutput(){
return new Printer();
}
public static void main(String[] args){
OutputFactory of=new  OutputFactory();
Computer c= new Computer(of.getOutput());
}
}


public class BetterPrinter implements Output{

}

总结:上面的BetterPrinter类实现了Output接口,因此也可当成output对象使用,于是只要把outputFactory工厂类的getoutput()方法中代码改为:return new BetterPrinter();


2.单列设计模式
单列设计模式:解决一个类内存只存在一个对象,想要保住唯一的对象。也加饿汉模式。
对象是方法被调用时,才初始化,也叫做延时加载。signle类进内存,对象还没有存在,只有调用getInstance方法时才建立对象。记住原则,定义单列建议使用饿汉式。
代码举例:
class single
{
private single s=null;
private single(){}
public static single getInstance()
{if(s==null)
{
synchronized(single.class)
{if(s==null)
s=new.single();
}
}
}
}
或public static synchronized single getInstance(){}








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值