在一个项目中,我看到了一些由前雇员编写的代码。此人已将其命名为适配器模式的实现,但我不确定。以下是代码:
public class RowSetAdaptor implements java.io.Serializable {
private javax.sql.rowset.CachedRowSet cachedRowSet;
public RowSetAdaptor() throw SQLException {
cachedRowSet = new com.sun.rowset.CachedRowSetImpl();
}
public v
背景
我一直在考虑在代码中记录设计模式,方法是为常见的设计模式设置接口,这样当人们阅读我的代码时,就可以清楚地看到我使用的是一种设计模式。
我会通过在我们的解决方案中创建一个名为Design的项目来做到这一点,因此很明显,它是一个通用的术语,而不是特定于业务/组织的术语。甚至可能将它变成一个开源包,以进一步将其与我们项目中的业务逻辑区分开来。
该项目将由用于不同设计模式的所有类的单独接口组成,在实现模式时将对这些类进行扩展/实现。
问题
Are在将接口弯曲成工具以记录固有的非功能性的东西时是否存在任何功能问题?
In --换句话说,使用接口作为文档工具的后果是什么,因为接口非常肤浅?
Bari
我知道基本的Java,但我有时会在面向对象的设计上苦苦挣扎。
我使用的是一个供应商的应用程序接口,我想把它包装起来,以便在其他项目中作为lib重用。来自供应商的所有服务都是不同的类,没有层次结构等等,但我没有更改它的选项。所以我想使用构图,并确保我不会重复我自己。
我最初的想法是创建一个服务,该服务将接收所有服务通用的参数,该服务将实现api。
我到处尝试重构这段代码,我非常确定我正在尝试的这个设计有一些很大的问题,因为我在尝试创建单元测试时注意到了:)
如何才能实现更好的设计?目前为止的代码:
/* This is how I call the service from the vendor
因为我知道Java不支持多重继承,所以我想知道如何在Java中实现这种设计:
Class StudentModel extends BaseModel{
public void doSomething(){};
}
Class ParentModel{
protected List<BaseModel> children = new List<BaseModel>();
public void addChild(BaseModel child){
children.add(child);
}
// and other paren
我有一个我想以装饰器/适配器的方式扩展功能的类,只是我不希望我的扩展类必须知道它正在扩展的类的任何种类,并且我不想为我想要扩展的每种对象类型编写一个新的类。但是,我想要扩展的所有对象都共享一个公共基类Team。这听起来使用泛型的时机已经成熟,所以我最初的想法是: public class TournamentTeam<T> : T
where T : Team
{
private int mSeed;
public TournamentTeam(T team, int seed)
: base(team)
{
/*
我想知道一个方法的恰当术语,它存在的唯一原因是让方法调用变得更容易,让方法名听起来/读起来更好。
就像这样:
public function translate($string)
{
return Zend_Registry::get('Zend_Translate')->translate($string);
}
我可以称它为适配器,但这在某种程度上是为adapter设计模式保留的。
我有这样的设计:
public interface MyInterface {
public abstract List<Sth> getSth();
}
public class MyConcreteImplementation implements MyInterface {
private ConcreteSth mSth = new ConcreteSth();
public List<Sth> getSth(){
return mSth.getSth(additionalParams);
}
}
上面代码的
假设我有一个控制台应用程序或Windows服务,并且使用带有IOC容器的依赖注入(在我的具体情况下,我使用的是Autofac)。
我的IOC容器解析的类之一是一个WorkDoer类,它有一个长期运行的DoWork(Args args)方法。当DoWork(Args args)完成时,将引发一个自定义事件(WorkDone)。在我的例子中,当带有参数的消息从消息队列中取出时,就会触发DoWork。
我也有一个通知类,我希望订阅我的WorkDone事件。
具体而言
public class Notifier
{
public void Subscribe(WorkDoer