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

本文介绍了两种常用的设计模式:简单工厂模式和单例设计模式。通过具体实例解释了如何利用简单工厂模式实现对象创建的解耦,并展示了单例设计模式如何确保类在运行期间只有一个实例存在。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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(){}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值